none
Valor por defecto para en @Html.editorfor RRS feed

  • Pregunta

  • 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

    miércoles, 31 de agosto de 2011 11:58

Respuestas

  • 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
    miércoles, 31 de agosto de 2011 13:03
  • 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
    • Marcado como respuesta Eder Costa martes, 16 de octubre de 2012 13:19
    miércoles, 31 de agosto de 2011 14:02

Todas las respuestas

  • 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
    miércoles, 31 de agosto de 2011 13:03
  • 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..
    miércoles, 31 de agosto de 2011 13:46
  • 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
    miércoles, 31 de agosto de 2011 13:50
  • Eso es
    miércoles, 31 de agosto de 2011 13:50
  • 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
    miércoles, 31 de agosto de 2011 13:53
  • 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>

           

    miércoles, 31 de agosto de 2011 13:57
  • 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
    • Marcado como respuesta Eder Costa martes, 16 de octubre de 2012 13:19
    miércoles, 31 de agosto de 2011 14:02
  • 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!!!
    miércoles, 31 de agosto de 2011 14:10
  • 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!!!
    miércoles, 31 de agosto de 2011 14:29