2009-07-20 28 views
20

Quiero deshabilitar un cuadro de texto en la vista. Así que utilizo siguiente código:¿Cómo crear un texto de solo lectura usando html helper en asp.net mvc?

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

o

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

Ambos de ellos no funcionan. ¿cual es la solución?

+0

¿Tal vez podría enviar el texto a un DIV si solo está destinado a ser leído? – Philippe

+0

Además de usar el método sobrecargado, probablemente también deba usar disabled = "disabled" - http://www.w3schools.com/tags/att_input_disabled.asp – blu

+0

> [Aquí está n Puede ver. cómo crear un cuadro de texto de solo lectura en MVC] (http://www.codeshower.blogspot.in/2012/09/mvc-how-to-create-readonly-textbox-in.html) –

Respuesta

45

Trate

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

no estoy seguro de lo que tiene que utilizar la sobrecarga con 4 parámetros. Debería poder usar el que tiene 3, pero debe agregar @ al solo, ya que readonly es una palabra clave en C#. Y configurar @readonly para readonly es compatible con XHTML.

6

Trate

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

en lugar de

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

Si marca the documentation, se puede ver que el tercer parámetro no es htmlAttributes, a medida que el previsto.

Necesita usar el overload with four parameters.

+1

Parece que esto ha cambiado y que el 3er parámetro * IS * htmlAttributes. – mattruma

2

O esto:

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

que tener en cuenta un cuadro de texto disabled no se presentará con un formulario HTML, sino un cuadro de texto readonly lo hará.

MVC3 documentation muestra la firma como Html.TextBox (nombre de la cadena, valor del objeto, objeto htmlAttributes) utilizado anteriormente.

5

Si no está obligado a mostrar un cuadro de texto de solo lectura en su página web, considere utilizar el @Html.DisplayFor ayudante: su salida será de solo lectura (en realidad será solo un texto en un div) y formará parte del Modelo cuando el motor modelará bind en submit.

+0

No estoy seguro de por qué pero esto, * "sea parte del Modelo cuando el motor muestre el enlace en el envío." *, No funciona, para mí, en MVC 5. Para un 'int', por ejemplo, siempre obtengo un '0'. Si uso esto -> '@ Html.TextBoxFor (m => m.ID, nuevo {@readonly =" readonly "})' funciona como se esperaba.No bajé, ya que no puedo verificar que no sea el problema aquí. –

5

Aprovechando el más hasta la fecha de API que puede utilizar: Formas motor

Web:

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

Razor Motor:

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

Saludos.

+0

gracias por señalar el formato del motor – Twocode

Cuestiones relacionadas