使用Html.Helper函数创建多行文本框

paa*_*one 50 c# asp.net asp.net-mvc

我正在尝试使用ASP.NET MVC使用以下代码创建多行文本框.

<%= Html.TextBox("Body", null, new { TextBoxMode = "MultiLine", Columns = "55px", Rows = "10px" })%>
Run Code Online (Sandbox Code Playgroud)

它只显示一行固定大小的文本框.

另一方面

<asp:TextBox runat="server" ID="Body" TextMode="MultiLine" Columns="55" Rows="10"></asp:TextBox> 
Run Code Online (Sandbox Code Playgroud)

渲染右视图,但在控制器的post方法中使用formCollection命名形式

form["Body"]; 
Run Code Online (Sandbox Code Playgroud)

返回null值.

Dar*_*rov 101

html中的多行文本框是<textarea>:

<%= Html.TextArea("Body", null, new { cols = "55", rows = "10" }) %>
Run Code Online (Sandbox Code Playgroud)

要么:

<%= Html.TextArea("Body", null, 10, 55, null) %>
Run Code Online (Sandbox Code Playgroud)

甚至更好:

<%= Html.TextAreaFor(x => x.Body, 10, 55, null) %>
Run Code Online (Sandbox Code Playgroud)

另一种可能性是使用以下[DataType]属性修饰视图模型属性:

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

在你看来:

<%= Html.EditorFor(x => x.Body) %>
Run Code Online (Sandbox Code Playgroud)

并通过CSS设置宽度和高度.


aha*_*fox 6

你应该使用MVC4:

@Html.TextAreaFor(x => x.Body, 10, 15, null)
Run Code Online (Sandbox Code Playgroud)