Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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
C# 在MVC5和Razor 3中向ActionLink添加数据切换_C#_Jquery_Asp.net Mvc_Razor_Twitter Bootstrap 3 - Fatal编程技术网

C# 在MVC5和Razor 3中向ActionLink添加数据切换

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

我正试图在MVC5/Razor3应用程序中,使用引导css在navagation选项卡上创建切换效果。我当前的共享布局

        <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');
});