【问题标题】:ASP.NET MVC: Html.EditorFor and multi-line text boxesASP.NET MVC:Html.EditorFor 和多行文本框
【发布时间】:2011-09-27 00:50:06
【问题描述】:

这是我的代码:

    <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>

这是它生成的:

    <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>

如何告诉它该字段应该是一个五行文本框,而不是一个单行文本框?

【问题讨论】:

标签: asp.net-mvc-3 razor


【解决方案1】:

使用数据类型'MultilineText':

[DataType(DataType.MultilineText)]
public string Text { get; set; }

ASP.NET MVC3 - textarea with @Html.EditorFor

【讨论】:

    【解决方案2】:

    另一种方式

    @Html.TextAreaFor(model => model.Comments[0].Comment)
    

    然后在你的 CSS 中这样做

    textarea
    {
        font-family: inherit;
        width: 650px;
        height: 65px;
    }
    

    DataType 交易允许在数据中回车,并不是每个人都喜欢这些。

    【讨论】:

      【解决方案3】:

      在您看来,而不是:

      @Html.EditorFor(model => model.Comments[0].Comment)
      

      只需使用:

      @Html.TextAreaFor(model => model.Comments[0].Comment, 5, 1, null)
      

      【讨论】:

      • 我喜欢这种方法的好处是我不需要一直深入到另一个程序集中的属性中......我的模型类属性(当然应该更多地使用视图模型,但它取决于应用程序等情况。)加上所选答案的问题是如果另一个页面或应用程序希望文本不是多行的。 IMO 这对某些应用程序非常有用,而另一种对其他应用程序很好。对我来说是@Html.TextAreaFor(model => model.Comments, 5, 1, new { @class= "form-control" }) thx
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-31
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多