在ASP.NET Core 2.x中,我使用GetExpressionText
类的静态方法ExpressionHelper
作为IHtmlHelper<T>
扩展方法:
using Microsoft.AspNetCore.Mvc.ViewFeatures.Internal;
public static class HtmlHelperExtensions
{
public static string GetExpressionText<TModel, TResult>(
this IHtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TResult>> expression)
{
return ExpressionHelper.GetExpressionText(expression);
}
}
在ASP.NET Core 3.0中,命名空间
Microsoft.AspNetCore.Mvc.ViewFeatures.Internal
不再可用。因此,编译器将引发异常:什么是
ExpressionHelper
功能的适当替代品? 最佳答案
可以使用ModelExpressionProvider
中的Microsoft.AspNetCore.Mvc.ViewFeatures
。
方法GetExpressionText
包装了ExpressionHelper
的相同方法,并添加了此Github issue中描述的其他缓存或结果。
using Microsoft.AspNetCore.Mvc.ViewFeatures;
public static class HtmlHelperExtensions
{
public static string GetExpressionText<TModel, TResult>(
this IHtmlHelper<TModel> htmlHelper,
Expression<Func<TModel, TResult>> expression)
{
var expresionProvider = htmlHelper.ViewContext.HttpContext.RequestServices
.GetService(typeof(ModelExpressionProvider)) as ModelExpressionProvider;
return expresionProvider.GetExpressionText(expression);
}
}
关于c# - 是否可以替换ASP.NET Core 3.0中的ExpressionHelper?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57821737/