使用链接asp.net mvc2

时间:2010-09-01 00:16:19

标签: asp.net asp.net-mvc asp.net-mvc-2 actionlink

如何在视图中创建静态链接? (使用ASP.NET MVC2)

我正在进行网站导航,基本上有4个主要区域。它们被分成子区域,一个控制器负责整个“主区域”。

所以基本上点击一个主要区域后,我想显示一个指向不同子区域的链接列表。我只是通过右键单击并添加视图然后在其上放置链接列表来创建页面。但是如何使用<%: Html.ActionLink %>链接到此...似乎我无法直接链接到.aspx

修改

我尝试了<%: Url.Content("~/Path/to.aspx") %>,这只是输出文字......

修改:当我使用<a href="......aspx">Go</a>直接链接到它并点击它时,我得

  

无法找到资源。

     

描述:HTTP 404.您正在查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

但问题是我知道它肯定存在。

2 个答案:

答案 0 :(得分:1)

静态内容链接

如果你直接链接到实际文件(不是MVC视图),那么你可以静态地将它们写下来,或者使用<%= Url.Content() %>使它们更容易识别应用程序根文件夹。

因此,具有应用程序根文件夹感知的某个静态链接将如下所示:

<a href="<%= Url.Content("~/some/folder/file.aspx") %>">Go there</a>

MVC视图

但是,如果您指的是视图,那么您应该只为您的Html.ActionLink()电话提供控制器和操作名称。它应该转换为您的路由设置和正确的控制器操作,该操作决定显示哪个视图(或者换句话说哪个ASPX)。

只是为了清楚:您没有链接到MVC中的视图,因为它们被禁止直接访问(检查/ Views文件夹中的web.config文件)。相反,您始终链接到将视图内容作为其操作结果提供的控制器操作。

答案 1 :(得分:1)

您无法通过直接调用视图的aspx页面来创建到视图页面的静态链接,如

<a href="Views/Home/About.aspx">go</a>

通过直接链接到View页面,无法访问Views文件夹中的所有文件。如果要使用静态链接到视图页面,则必须为页面创建操作。 但是如果你的页面不在Views文件夹中,你可以通过链接直接调用它。

这是一个层次结构示例

MVCProject
    Content
    Controllers
    Models
    StaticPages         <-- all pages in here can be accessible through a direct link <a href="/StaticPages/WebForm.aspx">go</a>
        WebForm.aspx
        |_WebForm.aspx.cs
    Views               <-- all pages in here cannot be accessed directly by calling the Relative path from a link <a href="/Views/Home/Index.aspx">go</a>
        Home
            Index.aspx
            About.aspx

因此,如果您的链接直接调用Views内的页面,则它始终返回404.除非您创建该页面的ActionResult并通过其/Controller/Action网址调用它。