0

我是 asp.net MVC4 的新手。

我正在我的网站中实现导航栏。

单击导航栏中的当前页面时,我想防止刷新。

更新 我使用 Razor 作为导航栏:

<ul>

@Html.ActionLink("FEATURE_1_URL","FEATURE_1_URL","Home")
@Html.ActionLink("FEATURE_2_URL","FEATURE_2_URL","Home")
@Html.ActionLink("FEATURE_4_URL","FEATURE_4_URL","Home")
</ul>

我怎样才能实现它?

4

3 回答 3

1

使用 jQuery

$('.btnCurrent').on('click', function(e){
    //Determine page using hidden field or something like that
    if(page == currentPage){
        e.preventDefault();
    }
});
于 2013-10-06T20:09:53.560 回答
1

在给定的解决方案中,页面将被刷新,但会减少服务器调用,并且不会一次又一次地调用操作。

在 MVC4 中,您可以通过使用缓存来实现此目的的最佳方法之一

[OutputCache(Duration=30)]
public ActionResult FEATURE_1_URL(){}

因此,通过指定时间,它会将您的结果存储在缓存中,因此当您下次单击 ActionLink 时,它将根据持续时间为您提供缓存数据的结果,并将减少对服务器的请求。

这至少对于快速响应很有用

于 2013-10-08T08:36:37.337 回答
0

基本上,我所做的是创建一个@helper 来构建我的菜单项,您只需将当前以某种方式处于活动状态的菜单项传递给您的模型,并且在构建该项目时,将href 设置为#。这也可以使用 javascript/jquery 来完成。

这是我的@helper 方法:

@helper MenuItemDesigner(string MenuItemName, bool hasAccess, string view, string controller, string areaName, MenuItems.Name menuItem, string       glyphicon, string badge)
 {
 if (hasAccess)
 {
     <a 
     @if (Model.ActiveMenuItem == menuItem)
     {
         <text>id = "@menuItem" href="#"</text>
        @Html.Raw("class= 'list-group-item active'");
     }
     else
     {
         <text>id = "@menuItem" href="@Url.Action(view, controller, new { Area = areaName })"</text>
        @Html.Raw("class= 'list-group-item'");
     }
     ><span class="@glyphicon"></span> @MenuItemName <span class="badge" data-val="0" style="display:none">@badge</span>
     </a>
 }
}

显然,并非所有这些都适用于每个场景,但这可以作为参考。重要的部分是只知道当前活动的菜单项并设置它的 href="#" 但是你需要这样做。

于 2017-06-01T18:03:35.507 回答