Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 Mvc3实现自定义操作链接_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 Mvc3实现自定义操作链接

Asp.net mvc 3 Mvc3实现自定义操作链接,asp.net-mvc-3,Asp.net Mvc 3,我有.NETMVC3网站。我必须实现顶部菜单。每个菜单标签都指向他的操作并显示另一个视图。这就是我现在看到的: <ul id="menu"> <li>@Html.ActionLink("Home", "Index", "Home")</li> <li>@Html.ActionLink("Products", "Products", "Home")</li> <li>@Html.

我有.NETMVC3网站。我必须实现顶部菜单。每个菜单标签都指向他的操作并显示另一个视图。这就是我现在看到的:

<ul id="menu">
        <li>@Html.ActionLink("Home", "Index", "Home")</li>
        <li>@Html.ActionLink("Products", "Products", "Home")</li>
        <li>@Html.ActionLink("Pricing", "Pricing", "Home")</li>
        <li>@Html.ActionLink("Our Team", "OurTeam", "Home")</li>
        <li>@Html.ActionLink("Contact Us", "ContactUs", "Home")</li>
</ul><!-- /menu -->
“文本”是Home(例如第一个li) 当前ActionLink必须将类“Selected”添加到锚点

我怎么能做到?请帮忙

p、
我可以使用当前视图的“选定”类为我网站中的每个视图添加此菜单,但这不是一个好的解决方案。

您可以使用此
ActionLink
重载添加

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li>

如果我理解正确,您希望将“selected”类置于当前显示操作。 通过查看以下内容,可以在视图中执行检查:

HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()
HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString()
然后,按照前面答案中所示的方式将“选定”类放入actionlink

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li>
  • @Html.ActionLink(“Home”、“Index”、“Home”、null、new{@class=“:selected”})

  • 就我个人而言,我将创建一个ViewModel,其中包含一个“MenuAction”列表,该列表显示除路由值之外的bool属性“Selected”。从视图来看,Imo将更干净地处理数据。

    您将静态“选定”类添加到主链接。我需要将“选定”动态添加到当前ActionLink@user1086344. 您想何时添加它?例如,当您单击“产品”时,页面将加载“产品”视图,“选定”类必须添加到“产品”锚点,并从以前的锚点删除。@user1086344。我会给每个
    一个
    id
    ,并给它
    :selected
    jquery
    $(“#产品”).addClass(“:selected”)
    您可以添加一个脚本,该脚本接受控制器并将
    :selected
    赋予
    ,其id与控制器名称匹配。@user1086344。服务器端有什么问题?这是一个很好的解决方案。但我的菜单是局部视图,从布局中调用。因此,HttpContext.Current.Request.RequestContext.RoutedData.Values[“action”].ToString()将始终返回此部分的名称,并且此名称将永远不会与当前操作名称匹配。调用类似于@Html.action(“MainMenu”,“Menu”)的内容。然后在controllerMy错误中执行逻辑并准备视图,我使用var currentAction=htmlHelper.ViewContext.RoutedData.GetRequiredString(“操作”)而不是HttpContext.Current.Request.RequestContext.RoutedData.Values[“action”].ToString()。现在是工作。谢谢你知道我如何定制锚定html:texttext吗?你可以编写自己的html扩展。公共静态MvcHtmlString MySpan(此HtmlHelper html,字符串myText)
    HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString()
    HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString()
    
    <li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li>