none
Valor por defecto para en @Html.editorfor

    Question

  • Hola, estoy haciendo un formulario para que un cliente pueda modificar sus datos personales, y me gustaria q al lanzar la vista EditarCliente en los campos EditorFor saliesen rellenos de los datos del cliente para q solo cambie los q le interesen. Hay alguna forma de q el campo editorfor tenga un valor i no este en blanco??

     

    Espero su respuesta.

    Gracias

    Wednesday, August 31, 2011 11:58 AM

Answers

  • Buenas!

    Sí: simplemente crea un objeto del modelo, inicialízalo con los valores por defecto y pásalo a la vista.

      public class Customer
      {
        public string Nombre { get; set; }
      }
    

    Entonces lo que puedo hacer para que Html.EditorFor(x=>x.Nombre) me muestre un valor por defecto es lo siguiente:

        public ActionResult Index()
        {
          Customer c = new Customer();
          c.Nombre = "Default";
          return View(c);
        }
    

    Y listos!

    Un saludo!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    Wednesday, August 31, 2011 1:03 PM
  • Buenas!

    En principio Html.EditorFor funciona en las dos direcciones. Coje lo que tiene el modelo y al hacer el submit, el modelo se "actualiza" con los datos pasados. Tu código debería funcionarte.

    Lo único que se me ocurre es que miCliente sea null (es decir que el FirstOrDefault te devuelva nulo). Comprueba a ver que no sea eso. :D

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    Wednesday, August 31, 2011 2:02 PM

All replies

  • Buenas!

    Sí: simplemente crea un objeto del modelo, inicialízalo con los valores por defecto y pásalo a la vista.

      public class Customer
      {
        public string Nombre { get; set; }
      }
    

    Entonces lo que puedo hacer para que Html.EditorFor(x=>x.Nombre) me muestre un valor por defecto es lo siguiente:

        public ActionResult Index()
        {
          Customer c = new Customer();
          c.Nombre = "Default";
          return View(c);
        }
    

    Y listos!

    Un saludo!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    Wednesday, August 31, 2011 1:03 PM
  • Hola Eduard, primeramente gracias por contestar, eso es lo q tengo hecho, recupero de la BD un cliente i lo paso a la vista Editar xo me salen los campos sin rellenar... Para q tenga q rellenarlos todos otra vez nose si me explico... entonces por ejemplo si solo quiero cambiar un nombre... debo rellenar todos los datos para q pueda hacer el submit..
    Wednesday, August 31, 2011 1:46 PM
  • Sorry Vorox, pero no te entiendo bien :(

    El cliente que recuperas de la BD entiendes que tiene todos los datos, no? Y mandas ese cliente a una vista para editarlo y con Html.EditorFor te salen los campos vacíos?

    O bien es otra cosa?

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    Wednesday, August 31, 2011 1:50 PM
  • Eso es
    Wednesday, August 31, 2011 1:50 PM
  • Pues no lo entiendo... debería salirte. Fíjate en el ejemplo que te he puesto! Es lo mismo!

    Deberíamos ver código para poder decirte exactamente lo que puede estar pasando!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    Wednesday, August 31, 2011 1:53 PM
  • Yo creo q el ejemplo q me has puesto lo q hace es q lo q escribas en el editorfor se guardará en el modelo i al hacer el submit esos datos serán tratados en el método de retorno ( el método con la directriz HttpPost).. mi código es este:

    //Controlador

    public ActionResult EditarCliente(int id)
            {
                Cliente miCliente = videoclubDB.Cliente.FirstOrDefault(d => d.id_Socio == id);
                return View(miCliente);
            }

    //Vista

    <div class="editor-label">
                @Html.LabelFor(model => model.Nombre)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Nombre)
                @Html.ValidationMessageFor(model => model.Nombre)
               
            </div>

            <div class="editor-label">
                @Html.LabelFor(model => model.Apellidos)
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Apellidos)
                @Html.ValidationMessageFor(model => model.Apellidos)
            </div>

           

    Wednesday, August 31, 2011 1:57 PM
  • Buenas!

    En principio Html.EditorFor funciona en las dos direcciones. Coje lo que tiene el modelo y al hacer el submit, el modelo se "actualiza" con los datos pasados. Tu código debería funcionarte.

    Lo único que se me ocurre es que miCliente sea null (es decir que el FirstOrDefault te devuelva nulo). Comprueba a ver que no sea eso. :D

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    Wednesday, August 31, 2011 2:02 PM
  • Tienes razón! el cliente está a null xq la id me sale 0 todo el rato... Voy a investigar y comento más tarde.. GRACIAS!!!
    Wednesday, August 31, 2011 2:10 PM
  • Ok!! Tenias razón y yo también tenia el código bien... Venia arrastrando un error de asignación desde métodos anteriores... muchas gracias por tu ayuda Eduard hasta pronto!!!
    Wednesday, August 31, 2011 2:29 PM