你能在Razor中[废弃]DisplayTemplate吗
本文关键字:废弃 DisplayTemplate Razor | 更新日期: 2023-09-27 18:08:41
我在Razor中创建了一个专门用于显示货币的显示模板,现在我想在代码中删除它,并用一个接受字符串格式的标准文本显示模板代替它(我可以将其设置为"C"(。
然而,有很多情况发生,所以我想使用类似于[Obsolete]属性的东西和警告消息,以便在接下来的几周内完成这项工作,而不会破坏所有代码。
这可能吗?或者有等效的方法吗?
干杯,
亚当。
似乎不是:(
DisplayTemplates是通用的,例如:
@Html.DisplayFor(model => model.Foo)
要使用[Obsolete]
,您必须标记DisplayFor方法,该方法将应用于所有方法。我试图创建一个"更具体"的版本,看看它是否会接受(因为你可以将其标记为[Obsolete]
,如下所示:
public static class MyExtensions
{
[Obsolete]
public static MvcHtmlString DisplayFor<TModel, DateTime>(this HtmlHelper<TModel> html, Expression<Func<TModel, DateTime>> expression)
{
return html.DisplayFor(expression);
}
}
遗憾的是,这并没有奏效——它给出了以下错误:
编译器错误消息:CS0121:以下方法或属性:'MvcApplication11.Models.MyExtensions.DisplayFor(System.Web.Mvc.HtmlHelper,System.Linq.Expressions.Expression>('和'System.Web.Mvc.Html.DisplayExtensions.DisplayFor(System.Web.Mvc.HtmlHelper,System.Linq.Expression.Expression>('
所以我认为[Obsolete]
无法满足您的需求。如果你真的无法在IDE中选择对DisplayFor的调用,你可以尝试将堆栈跟踪记录在模板中(因为你可以在模板中执行任何C#(,然后在应用程序中运行。这不会是防弹的,但可能会有所帮助。