2011-02-16 58 views
46

Tôi đang cố gắng tạo một Hộp văn bản nhiều dòng bằng cách sử dụng ASP.NET MVC với mã sau đây.tạo hộp văn bản nhiều dòng bằng cách sử dụng hàm Html.Helper

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

Nó chỉ hiển thị một dòng văn bản có kích thước cố định.

mặt khác

<asp:TextBox runat="server" ID="Body" TextMode="MultiLine" Columns="55" Rows="10"></asp:TextBox> 

ám chỉ rằng chánh kiến, nhưng trong phương pháp bài của bộ điều khiển với FormCollection tên hình thức

form["Body"]; 

trả về một giá trị null.

+0

Chỉ cần lưu ý rằng trên ví dụ đầu tiên của bạn, bạn có Cột = "55px". Đó có phải là một lỗi đánh máy hay nó giống như trong mã?Xem nếu lấy mà ra sửa chữa vấn đề của bạn :) Tôi không chắc chắn nếu nó sẽ vì vậy đó là lý do tại sao đây chỉ là một bình luận ... –

+0

Tôi vẫn sẽ đi xuống các tuyến đường dataannotations, trừ khi đây là một dự án MVC1 – MrBliz

Trả lời

97

Một textbox multiline trong html là <textarea>:

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

hay:

<%= Html.TextArea("Body", null, 10, 55, null) %> 

hoặc thậm chí tốt hơn:

<%= Html.TextAreaFor(x => x.Body, 10, 55, null) %> 

Tuy nhiên khả năng khác là để trang trí bất động sản xem mô hình của bạn với thuộc tính [DataType]:

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

và theo quan điểm của bạn:

<%= Html.EditorFor(x => x.Body) %> 

và thiết lập chiều rộng và chiều cao thông qua CSS.

+0

Tôi thường sử dụng EditorFor, và thiết lập chiều cao vv với Css. Dường như sạch hơn – MrBliz

+0

@ Doozer1979, tôi cũng vậy :-) –

+0

Cảm ơn rất nhiều, hoạt động! Tôi cũng chỉ tìm ra rằng các thuộc tính cho cột là cols ... – paaone

0

Tôi nghĩ rằng Html.EditorFor Là những gì bạn đang tìm kiếm. Đó là chỉ cho MVC2 và lên mặc dù. cái đó có giúp ích không?

Nếu bạn đang sử dụng DataAnnotations và trang trí thuộc tính của mình với thuộc tính [DataType(DataType.MultilineText)] , MVC sẽ dàn dựng ra html bắt buộc cho bạn.

+2

Không có thuộc tính' MultilineText'. Bạn có nghĩa là thuộc tính 'DataType'? –

+0

Vâng, bạn nói đúng. Có nghĩa là DataType.MultilineText – MrBliz

6

MVC4 bạn nên sử dụng:

@Html.TextAreaFor(x => x.Body, 10, 15, null) 
+0

với lớp như 'new {@class =" form-control "}' kiểm tra [ở đây] (http://stackoverflow.com/a/6218024/2218697) – stom

1

này cho phép nhiều dòng, thiết lập tùy chỉnh chiều rộng và chiều cao và thiết lập trình giữ chỗ. Đối với xác nhận sử dụng StringLength hoặc biểu thức chính quy trong Model.cs

Razor Xem Cú pháp

@Html.TextAreaFor(model => model.property, new { style = "width: 420px; height: 100px;", placeholder = "Placeholder here.." }) 
0

Trong Entity lớp:

[MaxLength(500)] 
public string Body { get; set; } 

Và theo quan điểm:

@Html.TextAreaFor(model => model.Body, new { rows = 10, cols = 50 }) 
0

VB .net giải pháp:

@ Html.TextAreaFor (Function (Model) Model.Body, 3, 55, Nothing)

Các vấn đề liên quan