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

Chr*_*kes 3 c# asp.net-mvc asp.net-mvc-5

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

[HtmlProperties(Size = 1, MaxLength = 2)]
public string MyModelField{ get; set; }
Run Code Online (Sandbox Code Playgroud)

是否有一个 MVC5 等价于做这样的事情而不必构建自定义类?

rso*_*bon 5

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

因此恕我直言,渲染对象(输入应该是什么样子)应该在 Razor View 内。事实上,MVC5 添加了新的选项来实现这一点——你可以在渲染 EditorFor 时htmlAttributesadditionalViewData对象传递给对象参数。

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

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

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

    [DisplayName("Name")]
    [Required]
    [MaxLength(5)]
    public string Name{ get; set; }
Run Code Online (Sandbox Code Playgroud)

  • +1 强调此信息不属于 ViewModel 或模型。它是明确属于视图的表示信息。 (3认同)