Html.DisplayFor和属性的方法

时间:2012-11-23 21:13:08

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

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

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

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

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

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

由于

2 个答案:

答案 0 :(得分:1)

您可以创建代理属性:

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

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

答案 1 :(得分:0)

只是做:

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

事实上......我不知道Model.Value是什么,但你可以这样做:

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