ASP.NET MVC:Html.EditorFor和多行文本框

Jon*_*len 49 razor asp.net-mvc-3

这是我的代码:

    <div class="editor-label">
        @Html.LabelFor(model => model.Comments[0].Comment)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Comments[0].Comment)
        @Html.ValidationMessageFor(model => model.Comments[0].Comment)
    </div>
Run Code Online (Sandbox Code Playgroud)

这就是它产生的:

    <div class="editor-label">
        <label for="Comments_0__Comment">Comment</label>
    </div>
    <div class="editor-field">
        <input class="text-box single-line" data-val="true" data-val-required="The Comment field is required." id="Comments_0__Comment" name="Comments[0].Comment" type="text" value="" />
        <span class="field-validation-valid" data-valmsg-for="Comments[0].Comment" data-valmsg-replace="true"></span>
    </div>
Run Code Online (Sandbox Code Playgroud)

我如何告诉它该字段应该是一个包含五行而不是一行文本框的文本框?

Raj*_*esh 117

使用数据类型'MultilineText':

[DataType(DataType.MultilineText)]
public string Text { get; set; }
Run Code Online (Sandbox Code Playgroud)

请参阅使用@ Html.EditorFor的ASP.NET MVC3 - textarea

  • 那太简单了. (4认同)

Fab*_*eco 36

在您的视图中,而不是:

@Html.EditorFor(model => model.Comments[0].Comment)
Run Code Online (Sandbox Code Playgroud)

只需使用:

@Html.TextAreaFor(model => model.Comments[0].Comment, 5, 1, null)
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这种方法的好处是我不需要在另一个程序集中一直进入我的属性..我的模型属性类(肯定的视图模型应该使用更多,但它是情境取决于应用程序等..)加上选定的答案问题是如果另一个页面或应用程序希望文本不是多行的.IMO对于某些应用程序来说非常好,而对另一些应用程序则很好.对我来说,它是@ Html.TextAreaFor(model => model.Comments,5,1,new {@class ="form-control"})thx (6认同)

小智 11

其他方式

@Html.TextAreaFor(model => model.Comments[0].Comment)
Run Code Online (Sandbox Code Playgroud)

在你的CSS中做到这一点

textarea
{
    font-family: inherit;
    width: 650px;
    height: 65px;
}
Run Code Online (Sandbox Code Playgroud)

DataType协议允许数据中的回车,而不是每个人都喜欢这些.