tutorial net mvc español asp c# asp.net-mvc asp.net-mvc-3

español - mvc asp.net c#



Html.EditorFor Establecer valor predeterminado (8)

Pregunta de novato Tengo un parámetro que se pasa a una vista de creación. Necesito establecer un nombre de campo con un valor predeterminado. @ Html.EditorFor (model => model.Id) Necesito configurar este campo de entrada con Id de nombre con un valor predeterminado que se pasa a la vista a través de un actionlink.

Entonces, ¿cómo puede establecerse este campo de entrada - @ Html.EditorFor (model => model.Id) - con un valor predeterminado.

¿Funcionaría lo siguiente? Donde el número 5 es un parámetro, paso al campo de texto para establecer el valor predeterminado.

@Html.EditorFor(c => c.PropertyName, new { text = "5"; })


¿No debería el @Html.EditorFor() hacer uso de los Atributos que pones en tu modelo?

[DefaultValue(false)] public bool TestAccount { get; set; }


Acabo de hacer esto (la primera respuesta de Shadi) y funciona como un regalo:

public ActionResult Create() { Article article = new Article(); article.Active = true; article.DatePublished = DateTime.Now; ViewData.Model = article; return View(); }

Podría poner los valores predeterminados en mi modelo como un adicto a MVC adecuado: (Estoy usando Entity Framework)

public partial class Article { public Article() { Active = true; DatePublished = Datetime.Now; } } public ActionResult Create() { Article article = new Article(); ViewData.Model = article; return View(); }

¿Alguien puede ver los inconvenientes de esto?


En el método constructor de su clase de modelo, establezca el valor predeterminado como lo desee. Luego, en su primera acción, cree una instancia del modelo y páselo a su vista.

public ActionResult VolunteersAdd() { VolunteerModel model = new VolunteerModel(); //to set the default values return View(model); } [HttpPost] [ValidateAntiForgeryToken] public ActionResult VolunteersAdd(VolunteerModel model) { return View(model); }


Esto es lo que he encontrado:

@Html.TextBoxFor(c => c.Propertyname, new { @Value = "5" })

funciona con una V mayúscula, no una minúscula v (la suposición de que el valor es una palabra clave que se usa generalmente en los organismos que establecen) Menor que el valor superior

@Html.EditorFor(c => c.Propertyname, new { @Value = "5" })

No funciona

Tu código termina luciendo así aunque

<input Value="5" id="Propertyname" name="Propertyname" type="text" value="" />

Valor vs. valor No estoy seguro de que me guste eso.

¿Por qué no simplemente verifica la acción del controlador si la propiedad tiene un valor o no y si no solo lo establece allí en su modelo de vista a su valor predeterminado y lo deja ligado para evitar todo este mono en la vista?


La forma limpia de hacerlo es pasar una nueva instancia de la entidad creada a través del controlador:

//GET public ActionResult CreateNewMyEntity(string default_value) { MyEntity newMyEntity = new MyEntity(); newMyEntity._propertyValue = default_value; return View(newMyEntity); }

Si quieres pasar el valor predeterminado a través de ActionLink

@Html.ActionLink("Create New", "CreateNewMyEntity", new { default_value = "5" })


La mejor opción es hacer esto en su modelo de vista como

public class MyVM { int _propertyValue = 5;//set Default Value here public int PropertyName{ get { return _propertyValue; } set { _propertyValue = value; } } }

Entonces en tu vista

@Html.EditorFor(c => c.PropertyName)

funcionará de la manera que lo desee (si no hay valor predeterminado de valor allí)


No es correcto establecer el valor predeterminado en Ver. La Vista debe realizar un trabajo de visualización, no más. Esta acción rompe la ideología del patrón MVC. Entonces, el lugar correcto para establecer los valores predeterminados: crear el método de la clase de controlador.


ViewBag en la ViewBag :

Controlador:

ViewBag.ProductId

Ver:

@Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})