gpt4 book ai didi

c# - 在 ASP.NET MVC 的局部 View 中确定当前 View 的名称

转载 作者:技术小花猫 更新时间:2023-10-29 12:12:33 25 4
gpt4 key购买 nike

我在我的测试 ASP.NET MVC 应用程序中有一个局部 View 。此 View 负责显示应用程序菜单按钮。

我想改变当前事件页面按钮的颜色。目前我写了类似的东西:

<ul id="menu">
<% var activeClass = (string)(ViewData["currentPage"]) == "Home" ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>

<% activeClass = (string)(ViewData["currentPage"]) == "About" ? "activeMenuButton" : ""; %>
<li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>

并在 Controller 操作中设置 View 数据:

//in home action
ViewData["currentPage"] = "Home";

//in About action
ViewData["currentPage"] = "About";

这可行,但我必须修改每个 Controller 操作。有没有更好的方法来自动检测 View 并以某种方式更改部分 View 代码以相应地更改颜色。

最佳答案

我认为您不需要 ViewData["currentPage"]。使用 ViewContext.RouteData.Values 代替:

试试这个:

<ul id="menu">
<% var activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
&& ViewContext.RouteData.Values["Action"] == "Home") ? "activeMenuButton" : ""; %>

<li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>

<% activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
&& ViewContext.RouteData.Values["Action"] == "About") ? "activeMenuButton" : ""; %>

<li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>

关于c# - 在 ASP.NET MVC 的局部 View 中确定当前 View 的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1141954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com