c# - 您可以 [过时] Razor 中的 DisplayTemplate 吗?

标签 c# asp.net-mvc-3 razor display-templates

我在 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);
    }
}

遗憾的是,这没有用 - 它给出了以下错误:

Compiler Error Message: CS0121: The call is ambiguous between the following methods or properties: 'MvcApplication11.Models.MyExtensions.DisplayFor(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression>)' and 'System.Web.Mvc.Html.DisplayExtensions.DisplayFor(System.Web.Mvc.HtmlHelper, System.Linq.Expressions.Expression>)'

所以我认为您无法使用[Obsolete] 实现您需要的功能。如果您真的无法在 IDE 中选择对 DisplayFor 的调用,您可以尝试在模板中记录堆栈跟踪(因为您可以在其中执行任何 C#),然后运行应用程序。这不是万无一失的,但可能会有所帮助。

关于c# - 您可以 [过时] Razor 中的 DisplayTemplate 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443462/

相关文章:

c# - 如何从 SqlDataReader 获取列的表名

asp.net-mvc - 使用 ClientTemplate 进行 Kendo 网格内联编辑

asp.net-mvc - 如何将媒体类型添加到样式表引用 asp mvc

c# - Unity3d 错误 CS2011 : Error opening response file (incorrect temp folder)

c# - 如何在 StructureMap 2.6 中为插件设置 session 范围?

ajax - 如何使用 ASP.NET MVC3 抛出 ajax 错误

javascript - 使用单独的 js 文件并在其中使用 Url Helpers 与 ASP.NEt MVC 3 和 Razor View Engine

visual-studio-2010 - <text> 内容的 Razor 格式

c# - 将 XmlElement 转换为元素为 ("ElementName"的 XElement )不返回任何结果

javascript - 未捕获的类型错误 : Cannot read property 'Constructor' of undefined