Ian*_*dge 14 asp.net-mvc asp.net-mvc-3
我最近一直在寻找ASP.NET MVC框架中的最佳实践,特别是关注的关注.我的问题是,如果我在模型上有属性,那么在该属性上进行某些格式化的最佳位置在哪里?
我想过几个选项,但不确定哪个是最好的.该示例使用DateTime.对不起,这有点长.
选项1:
在视图中:@Model.TheDate.String("{0:'blah'dd/MM/yyyy}")
我知道这不对,因为格式字符串不应该在这里(如果我想在整个应用程序中更改格式怎么办)
选项2:
视图中使用的扩展方法:@Model.TheDate.DisplayItNicePlease()
这种方式很有意义,因为视图正在选择用于格式化的扩展方法,而viewmodel只是将date属性公开给视图.不确定视图或视图模型是否应该负责格式化.
选项3: 在Html Helper方法中,例如,我应该在ASP.NET MVC 3中放置声明性HTML帮助器,以便您可以使用:
@Html.DisplayDateNice(Model.TheDate)
Run Code Online (Sandbox Code Playgroud)
选项4: 视图模型上的额外属性,以格式化它并返回一个字符串,例如:
public string TheDateStr
{
get
{
return TheDate.DisplayItNicePlease();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在视图中你就拥有了
@Model.TheDateStr
Run Code Online (Sandbox Code Playgroud)
与选项3非常相似,只是它保持视图真实,非常简单 - 视图只是输出模型中的内容而不关心数据的格式.
选项5: DisplayFormat属性,例如:在视图模型上:
[DisplayFormat(DataFormatString = "{0:'blah'dd/MM/yyyy}")]
public DateTime TheDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后在视图上:
@Html.DisplayFor(m => m.TheDate)
Run Code Online (Sandbox Code Playgroud)
我喜欢这个,除了格式字符串不再使用,所以带上选项5 ......
选项6:
某种习惯,DisplayFormatAttribute例如NiceDateDisplayFormatAttribute.在我看来,这可能是最好的解决方案,如果您只想要一个简单的字符串格式化,那么效果很好.我认为如果你想要更复杂的东西会变得更复杂,例如显示相对时间(计算C#中的相对时间),在这种情况下,最好是在扩展方法/ html助手中.
可能还有其他方法我甚至都不知道......
| 归档时间: |
|
| 查看次数: |
2048 次 |
| 最近记录: |