【问题标题】:Html.DisplayFor and properties' methodsHtml.DisplayFor 和属性的方法
【发布时间】:2012-11-23 21:13:08
【问题描述】:

我有一个模型,其中包含一个DateTime 字段TimeRecorded。我还为DateTime 定义了一个扩展方法,它将它与DateTime.Now 进行比较,并用非正式英语大致描述了“多久以前”(与 StackOverflow 主页上的时间戳不同)。

在我看来,我尝试了以下方法:

@String.Format("{0} - {1}", Html.DisplayFor(m => m.Value),
    Html.DisplayFor(m => m.TimeRecorded.ToRelativeString()))

我收到了一个 InvalidOperationException 的问候,告诉我我只能将 DisplayFor 用于“字段访问、属性访问、单维数组索引或单参数自定义索引器表达式”。

现在,我知道我可以轻松地为此创建一个显示模板;但是,我宁愿避免仅仅为了格式化单个值而拥有一个完整的单独文件。在我目前的观点中,有没有一种“传统”的方式来做到这一点?

谢谢

【问题讨论】:

    标签: c# asp.net-mvc-3 razor


    【解决方案1】:

    您可以创建代理属性:

    RelativeStringTimeRecord
    {
        get{return TimeRecorded.ToRelativeString()}
    }
    

    并使用Html.DisplayFor(m => m.RelativeStringTimeRecord())

    【讨论】:

      【解决方案2】:

      只要做:

      @String.Format("{0} - {1}", Html.DisplayFor(m => m.Value), Model.TimeRecorded.ToRelativeString())
      

      事实上...我不知道Model.Value 是什么,但你能简单地做吗:

      @string.Format("{0} - {1}", Model.Value, Model.TimeRecorded.ToRelativeString())
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-17
        • 2010-10-10
        • 1970-01-01
        • 2018-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多