我必须将页面从ASP.NET MVC升级到ASP.NET Core,有时我遇到了一些旧方法不再起作用的障碍。
是否有任何等效代码可以简化升级过程。
我现在发现的所有内容是@Html.Partial("name")
等于<partial name="name.cshtml" />
我遇到的问题是@Html.IsSelected
。我找不到如何在ASP.NET Core中使用它
任何帮助将不胜感激。
答案 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>