Novato pregunta.
Tengo un parámetro que se pasa a una vista de crear. Tengo que crear un nombre de campo con un valor predeterminado.
@Html.EditorFor(modelo => el modelo.Id)
Necesito de conjunto de este campo de entrada con el nombre de Id con un valor predeterminado que se pasa a la vista a través de un actionlink.

Así que, ¿cómo puede este campo de entrada –@Html.EditorFor(modelo => el modelo.Id) — get set con un valor predeterminado.

El siguiente trabajo?? Donde el número 5 es un parámetro que me pasa en el campo de texto para establecer el valor predeterminado.

@Html.EditorFor(c => c.PropertyName, new { text = "5"; })
InformationsquelleAutor Nate | 2011-05-19

10 Comentarios

  1. 59

    La manera correcta de hacerlo es pasar a 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" })
    • Esta es la solución terminé usando. Anton Semenov es correcta: la ideología de la MVC requiere que el programador para establecer los valores predeterminados en el Controlador y no en la Vista.
  2. 97

    Aquí es lo que he encontrado:

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

    trabaja con un capital V, no menor caso v (la premisa de valor es una palabra clave utilizada en incubadoras normalmente) Menor vs valor superior

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

    no funciona

    El código termina pareciéndose a esto a pesar de que

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

    Valor frente al valor. No estoy seguro de que estaría muy aficionado a eso.

    ¿Por qué no acaba de comprobar en la acción del controlador si el proprety tiene un valor o no, y si no acaba de establecer que hay en su opinión el modelo de su mora de valor y deje que se unen a fin de evitar todo este mono de trabajo en la vista?

    • NUNCA establece el valor del atributo cuando se utiliza HtmlHelper métodos. Establece el valor de la propiedad en el método GET antes de pasar el modelo a la vista.
  3. 16

    No su derecho a establecer valor por defecto en la Vista. La Vista debe realizar de la pantalla de trabajo, no más. Esta acción rompe con la ideología del patrón MVC. Así que el lugar adecuado para establecer valores predeterminados – método create de la clase controlador.

    • Quiero cambiar el formato de un valor de fecha y hora (dd/MM/aaaa mm:HH:ss) hasta (aaaa/MM/dd)
  4. 14

    Mejor opción es hacerlo 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;
           }
       }
    }

    A continuación, en la vista

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

    funciona de la manera que deseas (si no hay ningún valor predeterminado valor va a estar allí)

    • Por qué iba yo a codificar el valor de una propiedad en la VM? Que no tiene sentido para mí, pero tal vez estoy tratando de hacer algo diferente? Estoy tratando de pasar el parámetro de cadena de consulta, id, a la vista de Crear y rellenar el EditorFor helper con que el valor de id, por lo que se va a guardar el FK id en la base de datos. ¿Cómo puedo hacer eso?
  5. 3

    Yo solo hice esto (Shadi la primera respuesta) y funciona de maravilla:

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

    Podía poner los valores por defecto en mi modelo como un propper MVC adicto: (yo 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();
        } 

    ¿Puede alguien ver cuál es la desventaja de esto?

    • Estos son fijos los valores por defecto, si quieres facilitar durinng tiempo de ejecución, se necesita un enfoque diferente.
    • Gracias @Shadi, técnicamente Datetime.Ahora no es un valor fijo. Si el valor predeterminado fue generadas en tiempo de ejecución, sería el de los modelos de responsabilidad o el controlador?
    • Sólo se referirá a la MVC reglas (que se puede romper!) Modelo es sólo para la celebración de los datos, la Vista para verla, y su negocio debe ser colocado en el Controlador o clases de acceso el controlador. Respuesta corta, es el controlador de la responsabilidad.
  6. 3

    No la @Html.EditorFor() hacer uso de los Atributos que usted pone en su modelo?

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

    Empujón en el ViewBag:

    Controlador:

    ViewBag.ProductId = 1;

    Vista:

    @Html.TextBoxFor(c => c.Propertyname, new {@Value = ViewBag.ProductId})
    • Esto funcionó para mí, gracias!
  8. 1

    Esto funcionó para mí

    En Controlle

     ViewBag.AAA = default_Value ;

    En Vista De

    @Html.EditorFor(model => model.AAA, new { htmlAttributes = new { @Value = ViewBag.AAA } }
  9. 0

    En el método constructor de la clase del modelo de establecer el valor predeterminado de lo que quieras.
    Luego, en su primera acción de crear una instancia de la modelo y pasar a la 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);
        }
  10. 0

    Este es mi código de trabajo:

    @Html.EditorFor(model => model.PropertyName, new { htmlAttributes = new { @class = "form-control", @Value = "123" } })

    mi diferencia con otras respuestas es el uso de Valor dentro de la htmlAttributes matriz

Dejar respuesta

Please enter your comment!
Please enter your name here