激活当前视图菜单高亮呈现

在一个控制器中,它有很几个视图,在视图中有一个菜单。点击某一菜单,它分切换至对应的视图,当前的视图的菜单要高亮显示。
这个要求,也有许多网友问过Insus.NET。今天决定做一个例子,供大家学习与参考。

先看看效果:

上图中,当浏览China的视图时,China这行菜单是Active的,其它没有效果,依次类说。

接下来,看看菜单的源代码:

<ul>
    <li>@Html.ActionLink("Malaysia (2)", "Malaysia", "Career")</li>
    <li>@Html.ActionLink("Thailand (0)", "Thailand", "Career")</li>
    <li>@Html.ActionLink("Phillipines (2)", "Philippines", "Career")</li>
    <li class="active"> @Html.ActionLink("China (0)", "China", "Career")</li>
    <li>@Html.ActionLink("Hong Kong (0)", "HongKong", "Career")</li>
</ul>

 

当前的源程序是每一个视图均有此段代码。变化的地方是class="active"。
Ok,实现此功能,要知道用户浏览的是哪一个视图。
获取当前的视图名,你可以参考这篇《获取当前视图名》http://www.cnblogs.com/insus/p/5283729.html

如需要对此菜单作一些维护或是修改,得同时打开这几个视图来一起修改。因此我们还得重构这几个视图,解决html代码的冗余可以新建一个ParitalView来解决。

接下来面对的关键的地方要处理在视图中传递一个参数给部分视图。

创建一个视图,把菜单html代码拷贝过去,先保存,后面我们再来修改它:
激活当前视图菜单高亮呈现_第1张图片

 

现在我们需要处理,把当前的视图名,传至部分视图中去的功能。在Models中,创建一个PartialViewParameter类:

这个类中有一个public的属性,以后我们需要从视图中传参数给部分视图时,就使用这个属性。

此时我们可以去控制器中创建一个部分视图操作:
激活当前视图菜单高亮呈现_第2张图片


上图中的红公箭头,就是参数传递的入口。

下面的工作,就是分别打开与此有关的各个视图:

参数已经从视图传递到部分视图去了,那在部分视图,怎样接收与应用此参数呢?
菜单我们不能再直接写了,需要动态产生:
激活当前视图菜单高亮呈现_第3张图片

 

好的,我看看实现的功能与重构后程序运行效果:
激活当前视图菜单高亮呈现_第4张图片

 

你可能感兴趣的:(激活当前视图菜单高亮呈现)