C# 在MVC5和Razor 3中向ActionLink添加数据切换
我正试图在MVC5/Razor3应用程序中,使用引导css在navagation选项卡上创建切换效果。我当前的共享布局C# 在MVC5和Razor 3中向ActionLink添加数据切换,c#,jquery,asp.net-mvc,razor,twitter-bootstrap-3,C#,Jquery,Asp.net Mvc,Razor,Twitter Bootstrap 3,我正试图在MVC5/Razor3应用程序中,使用引导css在navagation选项卡上创建切换效果。我当前的共享布局 <div class="navbar-collapse collapse"> <ul class="nav nav-pills"> <li>@Html.ActionLink("Applications", "Inde
<div class="navbar-collapse collapse">
<ul class="nav nav-pills">
<li>@Html.ActionLink("Applications", "Index", "SecureApps")</li>
<li>@Html.ActionLink("Users", "Index", "Users")</li>
<li>@Html.ActionLink("BU Groups", "Index", "BUGroups")</li>
<li>@Html.ActionLink("Logs", "Index", "AppLogs")</li>
</ul>
</div>
在目标索引页上的@model声明上放置断点甚至不会被命中。客户端与服务器端 这里的一个问题是,当您的链接被单击时,它们实际上会按照预期导航到相应的控制器操作。发生这种情况时,您当前的客户端代码(如您的选择)将被完全忘记(页面将被刷新) 每当刷新页面时,客户端的更改通常都会被“擦除”,因此您需要一种在服务器级别持久化这些更改的方法 存储在服务器级别
您可能想考虑使用某种类型的服务器端变量来处理这个问题,以确定应用程序中的“您在何处”,并在您的选项卡上的“<代码> < LI>< /Cord>元素”上设置“Active”类。有多种方法可以处理此问题,在控制器操作中设置
ViewBag
属性,在模型上填充值以指示当前区域,等等
由于您将每个点链接到不同的控制器,因此您甚至可以根据当前控制器的设置来确定使用哪个控制器,如下所示:
<!-- Use your Controller to determine where you are -->
@{ var controller = ViewContext.RouteData.Values["controller"]; }
<div class="navbar-collapse collapse">
<ul class="nav nav-pills">
<li @(controller == "SecureApps" ? "class=active" :"")>@Html.ActionLink("Applications", "Index", "SecureApps")</li>
<li @(controller == "Users" ? "class=active" :"")>@Html.ActionLink("Users", "Index", "Users")</li>
<li @(controller == "BUGroups" ? "class=active" :"")>@Html.ActionLink("BU Groups", "Index", "BUGroups")</li>
<li @(controller == "AppLogs" ? "class=active" :"")>@Html.ActionLink("Logs", "Index", "AppLogs")</li>
</ul>
</div>
Url.Action()
方法将接收当前控制器和操作,呈现其目标位置,并将找到指向相同值的任何链接,并将其设置为“活动”。客户端与服务器端
这里的一个问题是,当您的链接被单击时,它们实际上会按照预期导航到相应的控制器操作。发生这种情况时,您当前的客户端代码(如您的选择)将被完全忘记(页面将被刷新)
每当刷新页面时,客户端的更改通常都会被“擦除”,因此您需要一种在服务器级别持久化这些更改的方法
存储在服务器级别
您可能想考虑使用某种类型的服务器端变量来处理这个问题,以确定应用程序中的“您在何处”,并在您的选项卡上的“<代码> < LI>< /Cord>元素”上设置“Active”类。有多种方法可以处理此问题,在控制器操作中设置
ViewBag
属性,在模型上填充值以指示当前区域,等等
由于您将每个点链接到不同的控制器,因此您甚至可以根据当前控制器的设置来确定使用哪个控制器,如下所示:
<!-- Use your Controller to determine where you are -->
@{ var controller = ViewContext.RouteData.Values["controller"]; }
<div class="navbar-collapse collapse">
<ul class="nav nav-pills">
<li @(controller == "SecureApps" ? "class=active" :"")>@Html.ActionLink("Applications", "Index", "SecureApps")</li>
<li @(controller == "Users" ? "class=active" :"")>@Html.ActionLink("Users", "Index", "Users")</li>
<li @(controller == "BUGroups" ? "class=active" :"")>@Html.ActionLink("BU Groups", "Index", "BUGroups")</li>
<li @(controller == "AppLogs" ? "class=active" :"")>@Html.ActionLink("Logs", "Index", "AppLogs")</li>
</ul>
</div>
Url.Action()
方法将接收当前控制器和操作,呈现其目标位置,并找到指向相同值的任何链接,并将其设置为“活动”
<!-- Use your Controller to determine where you are -->
@{ var controller = ViewContext.RouteData.Values["controller"]; }
<div class="navbar-collapse collapse">
<ul class="nav nav-pills">
<li @(controller == "SecureApps" ? "class=active" :"")>@Html.ActionLink("Applications", "Index", "SecureApps")</li>
<li @(controller == "Users" ? "class=active" :"")>@Html.ActionLink("Users", "Index", "Users")</li>
<li @(controller == "BUGroups" ? "class=active" :"")>@Html.ActionLink("BU Groups", "Index", "BUGroups")</li>
<li @(controller == "AppLogs" ? "class=active" :"")>@Html.ActionLink("Logs", "Index", "AppLogs")</li>
</ul>
</div>
$(function(){
// Find an element that points to the current URL and make it active
$('a[href="@Url.Action(Convert.ToString(ViewContext.RouteData.Values["action"]), Convert.ToString(ViewContext.RouteData.Values["controller"]))"]').closest('li').addClass('active');
});