链接单击asp.net mvc后,Jquery单击事件不保留更改

时间:2016-01-19 13:26:34

标签: jquery asp.net-mvc razor

我正在使用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的新手,您的经历将深受赞赏。在此先感谢:)

2 个答案:

答案 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

它可能不太灵活,但至少可以指定当用户在特定视图上时应该激活哪个链接。