什么是@ Html.IsSelected的ASP.NET Core等效项

时间:2018-09-07 09:59:38

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

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

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

我现在发现的所有内容是@Html.Partial("name")等于<partial name="name.cshtml" />

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

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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>