textboxfor mvc example dropdownlist c# asp.net-mvc-2 html-helper

c# - example - html helpers mvc 5



Cómo establecer un valor predeterminado con Html.TextBoxFor? (12)

Una pregunta simple: si utiliza Html Helper desde ASP.NET MVC Framework 1, es fácil establecer un valor predeterminado en un cuadro de texto porque hay una sobrecarga Html.TextBox(string name, object value) . Cuando intenté usar el método Html.TextBoxFor , mi primera conjetura fue probar lo siguiente que no funcionó:

<%: Html.TextBoxFor(x => x.Age, new { value = "0"}) %>

¿Debo seguir con Html.TextBox (cadena, objeto) por ahora?


Así es como lo resolví. Esto funciona si también lo usa para editar.

@Html.TextBoxFor(m => m.Age, new { Value = Model.Age.ToString() ?? "0" })


El valor predeterminado será el valor de su propiedad Model.Age . Esa es una especie de todo el punto.


Este trabajo para mí

@Html.TextBoxFor(model => model.Age, htmlAttributes: new { @Value = "" })


Esto debería funcionar para MVC3 y MVC4

@Html.TextBoxFor(m => m.Age, new { @Value = "12" })

Si quieres que sea un campo oculto

@Html.TextBoxFor(m => m.Age, new { @Value = "12",@type="hidden" })


Pruebe esto también, es decir, elimine {} nuevo y reemplácelo por una cadena.

<%: Html.TextBoxFor(x => x.Age,"0") %>


Resulta que si no especifica el Modelo al método de Vista dentro de su controlador, no crea un objeto para usted con los valores predeterminados.

[AcceptVerbs(HttpVerbs.Get)] public ViewResult Create() { // Loads default values Instructor i = new Instructor(); return View("Create", i); } [AcceptVerbs(HttpVerbs.Get)] public ViewResult Create() { // Does not load default values from instructor return View("Create"); }


Si tiene un formulario de página parcial para editar y agregar, entonces el truco que uso para establecer el valor predeterminado en 0 es hacer lo siguiente:

@Html.TextBox("Age", Model.Age ?? 0)

De esa forma será 0 si no está configurado o la edad real si existe.


Simplemente puede hacer:

<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>

o mejor, esto cambiará al valor predeterminado ''0'' si el modelo es nulo, por ejemplo, si tiene la misma vista para editar y crear:

@Html.TextBoxFor(x => x.Age, new { @Value = (Model==null) ? "0" : Model.Age.ToString() })


Usar @Value es un truco, ya que genera dos atributos, por ejemplo:

<input type="..." Value="foo" value=""/>

Deberías hacer esto en su lugar:

@Html.TextBox(Html.NameFor(p => p.FirstName).ToString(), "foo")


esto funcionó para mí, de esta manera establecemos el valor predeterminado para la cadena vacía

@Html.TextBoxFor(m => m.Id, new { @Value = "" })


puedes intentar esto

<%= Html.TextBoxFor(x => x.Age, new { @Value = "0"}) %>


value = "0" establecerá el valor de defualt para @ Html.TextBoxfor

su mayúscula "v" debe ser capital

A continuación se muestra un ejemplo de trabajo:

@Html.TextBoxFor(m => m.Nights, new { @min = "1", @max = "10", @type = "number", @id = "Nights", @name = "Nights", Value = "1" })