在过去,我使用MVC3中的自定义类(HtmlProperties)通过声明我的模型对象,如下所示来设置剃须刀内的HTML属性。是否有用于设置HTML Size属性和MaxLength的MVC5模型属性?
[HtmlProperties(Size = 1, MaxLength = 2)]
public string MyModelField{ get; set; }
是否有一个MVC5相当于做这样的事情,而不必建立一个自定义类?
在过去,我使用MVC3中的自定义类(HtmlProperties)通过声明我的模型对象,如下所示来设置剃须刀内的HTML属性。是否有用于设置HTML Size属性和MaxLength的MVC5模型属性?
[HtmlProperties(Size = 1, MaxLength = 2)]
public string MyModelField{ get; set; }
是否有一个MVC5相当于做这样的事情,而不必建立一个自定义类?
嗯,据我所知,ViewModel和Model是而不是应该包含关于事情将如何呈现的信息。它们应该只包含类型(例如,字段是字符串)和要求(例如字段不为空)。
因此,恕我直言的渲染对象(输入应如何看起来)应该在剃刀视图内。实际上,MVC5添加了新选项来实现这一点 - 您可以在渲染EditorFor时将htmlAttributes
对象传递给additionalViewData
对象参数。
@Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control", custom_attribute = "lol" } })
这是不可能的MVC3和MVC4,因为很少有HTML辅助接受htmlAttributes
作为参数,少数的Html Helpes只接受additionalViewData
此外,我认为你应该宁愿使用[MaxLength(int i)]
,如果你打算限制长度在视图模型输入的(因为这也将有助于MVC验证其客户端和服务器端)
[DisplayName("Name")]
[Required]
[MaxLength(5)]
public string Name{ get; set; }
+1强调此信息不属于ViewModel或Model。它是视图中明确属于的演示信息。 – 2014-09-26 12:50:50
它看起来并不像它,尽管你可以为它投票的[CodePlex网站(https://开头aspnetwebstack .codeple x.com/workitem/1237)... – petelids 2014-09-26 11:52:45
您可以在Razor View中添加Html属性,还是想在ViewModel中定义它们? – rsobon 2014-09-26 11:53:23
我宁愿在模型或视图模型中定义它们,以避免每次实现模型时都要指示剃刀。 – 2014-09-26 12:10:09