2009-07-20 12 views
20

Chcę wyłączyć pole tekstowe w widoku. Więc używam następujący kod:Jak utworzyć tekst tylko do odczytu przy użyciu helpera html w asp.net mvc?

<%= Html.TextBox("ID", Model.ID, new { readonly="true" })%> 

lub

<%= Html.TextBox("ID", Model.ID, new { enable="false" })%> 

Oba z nich nie działa. jakie jest rozwiązanie?

+0

Może możesz wydrukować tekst do DIV, jeśli chcesz go przeczytać? – Philippe

+0

Oprócz używania przeciążonej metody, prawdopodobnie powinieneś także użyć disabled = "disabled" - http://www.w3schools.com/tags/att_input_disabled.asp – blu

+0

> [Tutaj jest n Możesz zobaczyć. jak stworzyć textbox tylko do odczytu w MVC] (http://www.codeshower.blogspot.in/2012/09/mvc-how-to-create-readonly-textbox-in.html) –

Odpowiedz

45

Spróbuj

<%= Html.TextBox("ID", Model.ID, new { @readonly="readonly" })%> 

Nie jestem pewien, trzeba użyć przeciążenie z 4 parametrów. Powinieneś być w stanie użyć tego z 3, ale musisz dodać @ do readonly ponieważ readonly jest słowem kluczowym w C#. A ustawienie @readonly na readonly jest zgodne z XHTML.

6

Spróbuj

<%= Html.TextBox("ID", Model.ID, null, new { @readonly="true" })%> 

zamiast

<%= Html.TextBox("ID", Model.ID, new { @readonly="true" })%> 

Jeśli zaznaczysz the documentation, można zobaczyć, że trzeci parametr nie jest htmlAttributes, jak zapewne spodziewać.

Musisz użyć overload with four parameters.

+1

Wygląda na to, że to się zmieniło i że trzeci parametr * IS * htmlAttributes. – mattruma

2

Albo to:

<%= Html.TextBox("ID", Model.ID, new { @disabled="true" })%> 
5

przechowywać w umyśle disabled TextBox nie zostaną przedłożone z formularza HTML, ale readonly TextBox będzie.

MVC3 documentation pokazuje podpis jako Html.TextBox (nazwa napisu, wartość obiektu, obiekt htmlAttributes) użyty powyżej.

5

Jeśli nie jesteś zmuszony do pokazania pola tekstowego w trybie tylko do odczytu na swojej stronie internetowej, pomyśl o użyciu pomocnika @Html.DisplayFor: dane wyjściowe będą tylko do odczytu (w rzeczywistości będzie to po prostu tekst w dziale div) i będą częścią modelu, gdy silnik modeluje wiązanie po przesłaniu.

+0

Nie wiem dlaczego, ale to, * "być częścią Modelu, gdy silnik będzie modelował wiązanie przy wysyłaniu." *, Nie działa, dla mnie, na MVC 5. Na przykład 'int ', zawsze otrzymuję '0'. Jeśli używam tego -> '@ Html.TextBoxFor (m => m.ID, new {@readonly =" readonly "})" działa zgodnie z oczekiwaniami.Nie pisałem na DownVote, ponieważ nie mogę zweryfikować, że nie jestem tutaj problemem. –

5

Wykorzystując bardziej aktualne API można użyć:

Web Forms silnika:

<%= Html.TextBoxFor(m => m.ID, new { @readonly = "readonly" }) %> 

Razor silnika:

@Html.TextBoxFor(m => m.ID, new { @readonly = "readonly" }) 

Cheers.

+0

dzięki za wskazanie formatu silnika – Twocode

Powiązane problemy