添加TextArea所需的Html不能正常工作c#

时间:2016-01-05 18:26:39

标签: c# asp.net-mvc

我试图在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>
}

3 个答案:

答案 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"} })