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" })