在ASP.MVC 3中,如何指定多行EditorFor(textarea)的列和行?我正在使用[UIHint("MultilineText")],但找不到有关如何为文本区域添加属性的任何文档.
期望的HTML:
<textarea cols="40" rows="10"></textarea>
Run Code Online (Sandbox Code Playgroud)
我的MVC 3模型的相关部分:
[UIHint("MultilineText")]
public string Description { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的Razor cshtml的相关部分:
<div class="editor-field">
@Html.EditorFor(model => model.Description)
</div>
Run Code Online (Sandbox Code Playgroud)
我在视图中获得的内容:
<div class="editor-field">
<textarea class="text-box multi-line" id="Description" name="Description"></textarea>
</div>
Run Code Online (Sandbox Code Playgroud)
如何设置行和列?
我注意到ASP.NET MVC的TextAreaFor HTML帮助程序中最烦人(可能)的错误.出于某种原因,HTML帮助程序会在textarea中的任何内容之前添加NewLine.显然,这是为了解决个人内容的可能问题,从有意的新线开始,浏览器按照规范忽略它.
然而,通过添加它,我得到了更多烦人的错误,现在我的所有textareas在表单加载任何内容之前自动有一个额外的行(即在我的字段中的任何内容之前显示:).在吐出之前,似乎某些东西正在编码"换行符".
任何人有一个解决方法吗?我希望打算输出它的预期行为
<textarea>
Stuff</textarea>
Run Code Online (Sandbox Code Playgroud)
不是
<textarea> Stuff</textarea>
Run Code Online (Sandbox Code Playgroud)
我越来越...
编辑 进一步检查,这似乎是由于我使用AntiXssLibrary进行编码而不是默认的HtmlEncoder.我使用的是4.0版,我的编码器类方法如下所示:
protected override void HtmlEncode(string value, TextWriter output)
{
output.Write(Microsoft.Security.Application.Encoder.HtmlEncode(value));
}
Run Code Online (Sandbox Code Playgroud)
所以我的想法是,因为从TextAreaHelper调用的TagBuilder类,HTML编码标签的内容,它是默认HTML编码器的行为,但AntiXssLibrary更彻底,因此你看到这种行为?