是否有用于设置HTML Size属性和MaxLength的MVC5模型属性?

时间:2014-09-26 11:11:39

标签: c# asp.net-mvc asp.net-mvc-5

过去我在MVC3中使用了一个自定义类(HtmlProperties),通过声明我的模型对象,如下所示在razor中设置HTML属性。

[HtmlProperties(Size = 1, MaxLength = 2)]
public string MyModelField{ get; set; }

是否有MVC5等效于执行此类操作而无需构建自定义类?

1 个答案:

答案 0 :(得分:4)

嗯,据我所知,ViewModel和Model 应该包含有关如何呈现内容的信息。它们应该只包含类型(例如,字段是字符串)和要求(例如,字段不为空)。

因此,恕我直言渲染对象(输入应该如何)应该在Razor View中。实际上MVC5添加了新选项来实现这一点 - 您可以在渲染EditorFor时将htmlAttributes对象传递给additionalViewData对象参数。

@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control", custom_attribute = "lol" } })

这在MVC3和MVC4中是不可能的,因为很少有Html Helpers接受htmlAttributes作为参数而很少有Html Helpes只接受additionalViewData

此外,如果您打算在ViewModel中限制输入的长度,我认为您应该使用[MaxLength(int i)](因为这也有助于MVC验证客户端和服务器端)

    [DisplayName("Name")]
    [Required]
    [MaxLength(5)]
    public string Name{ get; set; }