gpt4 book ai didi

CSS 类不会应用于具有局部 View 的辅助扩展

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:59 25 4
gpt4 key购买 nike

我正在尝试显示带有部分 View 的类别列表。 “selected”类在选择时应应用于特定类别。但是,如果列表作为局部 View 返回,则不会应用该类。

_布局页面:

<nav>

@Html.Action("_getCategories", "Home")

</nav>

家庭 Controller 中的操作:

public ActionResult _getCategories()
{
var Categories = repository.getCategories();
return PartialView(Categories);
}

辅助扩展

public static MvcHtmlString MenuLink(this HtmlHelper helper, string text, string actionName, string controllerName)
{
string currentAction = helper.ViewContext.RouteData.GetRequiredString("action");
string currentController = helper.ViewContext.RouteData.GetRequiredString("controller");
if (actionName.Equals(currentAction) & controllerName.Equals(currentController))
{
return helper.ActionLink(text, actionName, controllerName, null, new { @class = "selected" });
}
return helper.ActionLink(text, actionName, controllerName);
}

局部 View :

@using Project1.Context

    @foreach (var c in Model)
    {
    //Display categories in Model
    }
    <li>@Html.MenuLink("Home", "Index", "Home")</li>
    <li>@Html.MenuLink("About", "About", "Home")</li>
    <li>@Html.MenuLink("Contact", "Contact", "Home")</li>

最佳答案

你调用一个子 Action ,所以你需要先得到它的父 ViewContext

public static MvcHtmlString MenuLink(this HtmlHelper helper, string text, string actionName, string controllerName)
{
ViewContext parentContext = helper.ViewContext.ParentActionViewContext;
string currentAction = parentContext.RouteData.GetRequiredString("action");
string currentController = parentContext.RouteData.GetRequiredString("controller");
if (actionName.Equals(currentAction) && controllerName.Equals(currentController))
{
return helper.ActionLink(text, actionName, controllerName, null, new { @class = "selected" });
}
return helper.ActionLink(text, actionName, controllerName);
}

关于CSS 类不会应用于具有局部 View 的辅助扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29692877/

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