gpt4 book ai didi

asp.net-mvc - 在 ASP.NET MVC(3) 中格式化模型属性的最佳位置在哪里?

转载 作者:行者123 更新时间:2023-12-03 22:39:45 27 4
gpt4 key购买 nike

我最近一直在寻找 ASP.NET MVC 框架内的最佳实践,特别是围绕关注点。我的问题是,如果我在模型上有一个属性,那么对该属性进行格式化的最佳位置在哪里?

我考虑了几个选项,但不确定哪个是最好的。该示例使用 DateTime。对不起,这有点长。

选项 1:
在 View 中:@Model.TheDate.String("{0:'blah'dd/MM/yyyy}")我知道这是不对的,因为格式字符串不应该在这里(如果我想在整个应用程序中更改格式怎么办)

选项 2:
View 中使用的扩展方法:@Model.TheDate.DisplayItNicePlease()这是有道理的,因为 View 选择了用于格式化的扩展方法,而 View 模型只是将日期属性公开给 View 。不确定 View 或 View 模型是否应该负责格式化。

选项 3:
在 Html Helper 方法中,即类似 Where should I place Declarative HTML helpers in ASP.NET MVC 3所以你可以使用:

@Html.DisplayDateNice(Model.TheDate)

选项 4:
View 模型上的额外属性以对其进行格式化并返回一个字符串,例如:
public string TheDateStr
{
get
{
return TheDate.DisplayItNicePlease();
}
}

然后在你刚刚拥有的 View 中
@Model.TheDateStr

与选项 3 非常相似,只是它使 View 非常非常简单 - View 实际上只是输出模型中的内容,而不关心数据的格式。

选项 5:
DisplayFormat 属性,例如:
在 View 模型上:
[DisplayFormat(DataFormatString = "{0:'blah'dd/MM/yyyy}")]
public DateTime TheDate { get; set; }

然后在 View 上:
@Html.DisplayFor(m => m.TheDate)

我喜欢这个,除了格式字符串不被重用,所以带上选项 5...

选项 6:
某种定制 DisplayFormatAttribute例如 NiceDateDisplayFormatAttribute .
在我看来,这可能是最好的解决方案,并且如果您只想要简单的字符串格式,则效果很好。我认为如果您想要更复杂的东西,这会变得更复杂,例如显示相对时间( Calculate relative time in C# ),在这种情况下,最好使用扩展方法/html 助手。

可能还有其他我什至不知道的方式......

最佳答案

如果这种类型格式将被大量使用,则使用扩展助手来格式化类型,或者在模型中添加额外的属性以返回原始属性的格式化版本。

关于asp.net-mvc - 在 ASP.NET MVC(3) 中格式化模型属性的最佳位置在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7527810/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com