2011-02-16 12 views
46

Próbuję utworzyć pole tekstowe wieloliniowe przy użyciu środowiska ASP.NET MVC za pomocą następującego kodu.Tworzenie wielowierszowego pola tekstowego przy użyciu funkcji Html.Helper

Po prostu pokazuje pojedynczy wiersz o stałej wielkości.

Natomiast

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

na renderuje właściwy pogląd, ale w sposobie postu sterownika z FormCollection nazwie forma

form["Body"]; 

zwraca wartość null.

+0

Po prostu zauważyłem, że na pierwszym przykładzie masz kolumny = "55px". Czy to jest literówka czy coś takiego w kodzie?Sprawdź, czy usunięcie tego problemu naprawi twój problem :) Nie jestem pewien, czy tak będzie, dlatego to jest tylko komentarz ... –

+0

Wciąż bym szedł drogą danych, chyba że jest to projekt MVC1 – MrBliz

Odpowiedz

97

wielowierszowego tekstowe w html jest <textarea>:

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

czyli

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

lub nawet lepiej:

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

a jeszcze inna możliwość to ozdobić swoją nieruchomość widok modelu z atrybutem [DataType]:

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

iw widoku:

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

i ustawić szerokość i wysokość za pomocą CSS.

+0

Zwykle używam EditorFor, i ustawić wysokość itp. z Css. Wygląda na czystszy – MrBliz

+0

@ Doozer1979, ja też :-) –

+0

Wielkie dzięki, to działa! Właśnie zorientowałem się, że atrybut kolumn to cols ... – paaone

0

Myślę, że Html.EditorFor To, czego szukasz. To tylko dla MVC2 i więcej. To pomaga?

Jeśli używasz DataAnnotations i udekorujesz swoją nieruchomość przy użyciu Atrybutu [DataType(DataType.MultilineText)] , MVC powinno utworzyć dla Ciebie odpowiedni html.

+2

Nie ma atrybutu "MultilineText". Czy masz na myśli atrybut 'DataType'? –

+0

Tak, masz rację. Meant DataType.MultilineText – MrBliz

6

MVC4 należy użyć:

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

z klasą 'nowy {@class =" form-control "}' sprawdź [tutaj] (http://stackoverflow.com/a/6218024/2218697) – stom

1

Pozwala to na multi-line, ustaw niestandardowy szerokość i wysokość i ustawienie uchwytu miejscu. walidacji wykorzystywane StringLength lub wyrażenie regularne w Model.cs

Razor widzenia składni

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

W Entity warstwy:

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

iw świetle:

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

VB Rozwiązanie .net:

@ Html.TextAreaFor (Funkcja (Model) Model.Body, 3, 55, Nic)

Powiązane problemy