【问题标题】:Working with links asp.net mvc2使用链接 asp.net mvc2
【发布时间】:2010-09-01 00:16:18
【问题描述】:

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

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

所以基本上在单击主要区域后,我想显示指向不同子区域的链接列表。我只是通过右键单击并添加视图然后在它们上放置链接列表来创建页面。但是我如何用<%: Html.ActionLink %> 链接到这个……看来我不能直接链接到.aspx's

编辑

我试过<%: Url.Content("~/Path/to.aspx") %>,那只是输出文本...

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

找不到资源。

描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。

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

【问题讨论】:

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


    【解决方案1】:

    静态内容链接

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

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

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

    MVC 视图

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

    明确说明:您不要链接到 MVC 中的视图,因为它们被禁止直接访问(检查 /Views 文件夹中的 web.config 文件)。相反,您始终链接到将视图内容作为其操作结果的控制器操作。

    【讨论】:

    • 有点令人沮丧,只是输出文本...没有链接
    • 究竟是什么输出?在浏览器中查看源代码并将其粘贴到此处
    • 我在 Url.Content("i.e. here") 中输入的任何字符串都是纯文本,周围没有标签。有点没用。你会认为写一个链接很容易。
    • @baron:我以为我很清楚,但我发现我不是。查看我编辑的答案。
    • @baron:Asp.net MVC 是关于对 HTML 的完全控制。 Url.Content 不用于创建链接,而是将应用程序 Web 文件夹转换为客户端浏览器可以使用的实际请求 URL。创建链接真的很容易。不要一开始就这么沮丧。随着时间的推移,您会发​​现 MVC 比 WebForms 好得多。
    【解决方案2】:

    您不能通过直接调用视图的 aspx 页面来创建指向视图页面的静态链接,例如

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

    Views 文件夹中的所有文件都无法通过直接链接到 View 页面来访问。如果你想有一个静态链接到一个视图页面,你必须创建一个到页面的动作。 但是如果你的页面不在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 url 调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多