我试图在TextAreaFor中添加一个必需项,但是当我发布它时它不会给出错误消息。我试图在后续行中做到这一点:
@Html.TextAreaFor(model => model.Content, new { htmlAttributes = new { @class = "form-control", required = "" } })
这是我的完整代码:
@using (Html.BeginForm("_Create", "Comments", FormMethod.Post))
{
@Html.HiddenFor(m => m.ThreadId)
<div class="form-group">
<div class="col-md-10">
@Html.TextAreaFor(model => model.Content, new { htmlAttributes = new { @class = "form-control", required = "" } })
@Html.ValidationMessageFor(model => model.Content, "", new { @class = "text-danger"})
</div>
</div>
<div class="form-group">
<div>
<input type="submit" value="Post" class="btn btn-default" />
</div>
</div>
}
答案 0 :(得分:2)
您不需要作为html属性。它应该是模型上的数据注释。
[Required]
public string Content { get; set; }
答案 1 :(得分:0)
@Html.TextAreaFor(model => model.Content, new { htmlAttributes = new { @class = "form-control", required = "" } })
应该是:
@Html.TextAreaFor(model => model.Content, new { @class = "form-control", required = "required" })
或者,如果您想明确命名您的匿名对象的参数:
@Html.TextAreaFor(model => model.Content, htmlAttributes: new { @class = "form-control", required = "" } })
但是,如果你不使用数据注释,这种方式可能更容易:
<textarea id="Content" name="Content" required class="form-control">@Model.Content</textarea>
(id
属性可能是可选的,具体取决于您的用法。)
旁注:我倾向于最小化html帮助方法的使用。对我来说,MVC也是让你能够非常精确地控制浏览器客户端代码,最好通过自己编写来完成。关于这个主题,WebForm是关于隐藏大部分浏览器客户端代码处理的。
使用广泛的html帮助程序,内置验证逻辑等,可能会导致您无法精确控制页面的工作方式。
答案 2 :(得分:0)
如果有人想使用html属性,
@Html.TextAreaFor(model => model.Content, new { required = "required", htmlAttributes = new { @class = "form-control"} })