我正在使用asp.net mvc 5.开发一个应用程序。基本上,我的模板的结构是这样的,它有一个主视图,包含下拉形式的一些链接(treeview),现在我是什么尝试的是,无论何时用户点击链接,它都会以这种方式执行特定控制器的操作:
<li class="treeview">
<a href="#"><i class="fa fa-cog"></i><span>Basic Setup</span> <i class="fa fa-angle-left pull-right"></i></a>
<ul class="treeview-menu">
<li>@Html.ActionLink("Department", "Index", "Departments")</li>
<li>@Html.ActionLink("Designation", "Index", "Designations")</li>
<li>@Html.ActionLink("Location", "Index", "Locations")</li>
<li>@Html.ActionLink("Payment Mode", "Index", "PaymentModes")</li>
</ul>
</li>
以上是下拉列表的代码,它只是重定向到特定控制器的动作,上面的代码与jquery click事件相关联,该事件只是修改从(treeview)到(active treeview)的父li标签类和child li通过添加类(活动)标记类,请注意,如果用户单击该链接,我希望将该链接显示为活动链接,使用以下代码:
<script type="text/javascript">
$(document).ready(function () {
$(document).on("click", "aside.main-sidebar ul li ul li a", function (e) {
$(this).parent().addClass("active");
$(this).parents("li.treeview").removeClass().addClass("active treeview");
});
});
</script>
一切正常但我遇到麻烦的地方是,当用户点击链接时,它会转到控制器的动作,呈现视图,但整个页面会刷新,看起来就像点击链接一样,它执行jquery click事件(添加活动类),然后转到控制器呈现视图并刷新整个视图然后显示它,下面是动作,只是为了方便:
public class DepartmentsController : Controller
{
private HrAndPayroll db = new HrAndPayroll();
public ActionResult Index()
{
return View(db.Departments.Where(x => x.SystemCode == SysCode).ToList());
}
}
我如何应对这种情况,因为我以前没有经历过这种情况,我也是asp.net mvc的新手,您的经历将深受赞赏。在此先感谢:)
答案 0 :(得分:1)
最简单的方法是简单地使用ViewContext.RouteData中包含的值,即Action和Controller值。我们可以建立在你现在拥有的东西上:
Hangfire.SqlServer
它在代码中并不漂亮,但它可以完成工作,并允许您根据需要将菜单提取到局部视图中。有一些方法可以更清洁的方式做到这一点,但是因为刚刚开始,这就足够了。
希望这对你有用!
答案 1 :(得分:0)
您可以在每个视图上放置一个小的jquery脚本,以便在页面加载时激活该链接。
<script>
$(document).ready(function() {
$(this).parent().addClass("active");
$(this).parents("li.treeview").removeClass().addClass("active treeview");
});
</script
它可能不太灵活,但至少可以指定当用户在特定视图上时应该激活哪个链接。