【问题标题】:What is the ASP.NET Core equivalent for @Html.IsSelected@Html.IsSelected 的 ASP.NET Core 等效项是什么
【发布时间】:2019-02-12 15:54:27
【问题描述】:

我必须将一个页面从 ASP.NET MVC 升级到 ASP.NET Core,我有时会遇到一些旧方法不再起作用的障碍。

是否有任何等效代码来简化升级过程。

我现在找到的只是@Html.Partial("name")等于<partial name="name.cshtml" />

我遇到的问题是@Html.IsSelected。我找不到如何在 ASP.NET Core 中使用它

任何帮助将不胜感激。

【问题讨论】:

  • 您应该可以使用当前视图上下文来获取当前控制器或动作的名称,然后您可以将其与一个值进行比较:@ViewContext.RouteData
  • 这不是您要找的吗? stackoverflow.com/a/34624217/5397642

标签: c# html asp.net asp.net-core


【解决方案1】:

您可以使用如下的一种扩展方法轻松解决此问题:

using Microsoft.AspNetCore.Mvc.Rendering;
using System;

namespace StackOverFlow.Extensions
{
    public static class MyExtensions
    {
        public static string IsSelected(this IHtmlHelper html, string controller = null, string action = null)
        {
            string cssClass = "active";
            string currentAction = (string)html.ViewContext.RouteData.Values["action"];
            string currentController = (string)html.ViewContext.RouteData.Values["controller"];

            if (String.IsNullOrEmpty(controller))
                controller = currentController;

            if (String.IsNullOrEmpty(action))
                action = currentAction;

            return controller == currentController && action == currentAction ?
                cssClass : String.Empty;
        }
    }
}

比在视图中使用它:

@using StackOverFlow.Extensions;

...

<ul>
    <li class="@Html.IsSelected(action: "Index")">
        <a href="@Url.Action("Index", "Home")">Home</a>
    </li>
    <li class="@Html.IsSelected(action: "About")">
        <a href="@Url.Action("About", "Home")">About</a>
    </li>
</ul>

【讨论】:

    猜你喜欢
    • 2019-10-22
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    相关资源
    最近更新 更多