MVC 2 EditorFor MaxLength和Size

时间:2010-08-12 09:31:30

标签: asp.net-mvc

如何在MVC 2中设置TextBox的MaxLength和Size? 关于SO的问题已经提出了几个问题。作为MVC的新手,我发现没有一个解决方案似乎有效 - 可能是因为我做得不对。

无论如何,我想知道是否有更好的解决方案,因为之前的问题似乎是在MVC 2处于测试阶段时提出的。

2 个答案:

答案 0 :(得分:9)

这很容易,你只需要额外的htmlAttributes

<%= Html.TextBoxFor(model => model.Member, new { maxlength = "20", width = "15" }) %> 
<%= Html.TextBoxFor(model => model.Member, new { maxlength = "20", style = "width:200px;" }) %> 

答案 1 :(得分:0)

上述解决方案有效但如果您有该字段的多个实例,则在模型或视图模型中设置它会更容易。小心修改实际模型,因为它们在更新时可能会不稳定。

实施例: 在模型或视图模型中。

[DisplayName("Notes")]
[MaxLength(500, ErrorMessage="Maximum length of notes field is 500 characters...")]
[DataType(DataType.MultilineText)]
public string Notes { get; set; }

要在提交时验证,您需要在web.config中使用以下内容。

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

确保在某处引用验证JS文件,最好是在Shared / _Layout或页面本身...

<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

最后确保在cshtml中包含验证消息。

@Html.EditorFor(model => model.Notes, new { htmlAttributes = new { @class = "form-control", rows = "5", @placeholder = "Notes", title = "Enter any notes..." } })
@Html.ValidationMessageFor(model => model.Notes, "", new { @class = "text-danger" })

构建解决方案并进行测试。希望这有助于其他人寻找解决方案。