我是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>
我怎样才能完成它?
答案 0 :(得分:1)
使用jquery
$('.btnCurrent').on('click', function(e){
//Determine page using hidden field or something like that
if(page == currentPage){
e.preventDefault();
}
});
答案 1 :(得分:1)
在给定的解决方案中,页面将被刷新但会减少服务器调用,并且不会一次又一次地调用操作。
在MVC4中,您可以通过使用缓存
来实现此目的[OutputCache(Duration=30)]
public ActionResult FEATURE_1_URL(){}
因此,通过指定时间,它会将结果存储在缓存中,因此当您下次单击ActionLink时,它将根据持续时间从缓存数据中获得结果,并且会减少对服务器的请求。
这至少对于快速响应非常有用
答案 2 :(得分: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 =&#34;#&#34;但是你需要这样做。