1

大家都知道MVC中的母版页是这样的:

<nav>
     <ul id="menu">
         <li id="id1"><%: Html.ActionLink(...)%></li>
         <li id="id2"><%: Html.ActionLink(...)%></li>
         <li id="id3"><%: Html.ActionLink(...)%></li>
     </ul>
</nav>

如何检查用户点击了哪个标签?通过检查网址或其他方式?所有这些链接都指向不同控制器中的方法。

4

2 回答 2

1

该方法(操作)将(通常)返回一个视图,您将在浏览器中看到该视图作为输出(除非您在操作方法中指定其他内容)。

ASP.NET MVC 中没有与页面请求/链接直接相关的页面。我认为您应该了解 MVC 工作原理的一些基本概念。

当我们请求页面时,请求由控制器中的操作方法处理。然后 action 方法将返回输出并显示在浏览器中。action 方法可以简单地返回一个“Hello World”字符串或一个具有一些复杂 HTML 标记的 View。返回视图意味着返回视图文件夹中可用的文件的内容。

记住 ASP.NET MVC 在某些约定上工作。因此,例如,如果我们有一个名为“User”的控制器和一个像这样的操作方法 Show

public class UserController
{
 public ActionResult Show()
 {
   return "Hello World";
 }

}

当用户浏览器时yourdomainname/User/Show,会执行 UserController 的 Show Action 方法并返回字符串“Hello World”。所以我们会在浏览器中看到“Hello World”。

如果我们想返回一个 View 怎么办?我们像这样替换 Show 方法

 public ActionResult Show()
 {
   return View();
 }

正如我之前告诉你的,我们现在需要遵守约定。这意味着,我们必须在Views->User->Folder名为 Show.cshtml 的视图中创建一个文件。如果此文件存在,MVC 将返回该文件,否则它将在您的视图文件夹中查找一些共享文件夹。

要添加视图,您可以右键单击您的操作方法,然后从上下文菜单中选择“添加视图”

在此处输入图像描述

一件好事是我们可以覆盖约定,这意味着,如果您想返回不同的视图,您可以在调用 View 方法时指定路径。

现在回到你的问题 Html.ActionLink 是一个 HTML 辅助方法,它将输出一个锚标记,

前任 :Html.ActionLink("Show User Info","Show","User")

这将输出一个链接,其中包含文本显示用户信息,并将指向控制器中的Show操作方法User。所以调用上述方法的输出 HTML 标记将是

<a href="User/Show">Show User Info</a>

此方法有不同的重载。

编辑:用于突出显示被点击的链接

如果您想通过着色来了解单击了哪个链接,请使用部分视图来显示您的菜单。当你得到一个动作调用方法时,在你的 Viewmodel 中设置一个 Property 值,它指示点击了哪个链接,在你的 View 中,使用该视图模型来调用局部视图。

http://weblogs.asp.net/scottgu/archive/2010/12/30/asp-net-mvc-3-layouts-and-sections-with-razor.aspx

于 2012-04-07T15:35:34.843 回答
0

document.location.href 就是我所需要的。

于 2012-05-09T13:40:03.473 回答