none
Como manejar 2 form en una misma vista en MVC 4 RRS feed

  • Pregunta

  • Hola

    Como puedo manejar 2 formularios los cuales apuntan a acciones distintas en una vista de MVC 4

    public class Login2Model

        {

            [Required(ErrorMessage = "El Login o Email es requrido")]

            public string UserName { get; set; }

            [Required(ErrorMessage = "La contraseña es requerida")]

            public string Password { get; set; }

            public bool RememberMe { get; set; }

        }

    public class RegisterModel

        {

            [Required(ErrorMessage = "Email obligatorio")]

            public string Email { get; set; }

            [Required(ErrorMessage = "Usuario obligatorio")]

            public string UserName { get; set; }

            [Required(ErrorMessage = "Nombre obligatorio")]

            public string Representante { get; set; }

        }

    Estos los agrupe en un modelo

    public class LoginRegisterModel

        {

            public LoginRegisterModel()

            {

                Login = new Login2Model();

                Register = new RegisterBasicModel();

            }

            public Login2Model Login { get; set; }

            public RegisterBasicModel Register { get; set; }

        }

    Vista

    @model LoginRegisterModel

    @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { id = "frmInput})) { }

    @using (Html.BeginForm("Register", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { id = "frmInput})) { }

    Controller

    [HttpPost]

    public ActionResult Login(Login2Model model, string returnUrl) {

    if (ModelState.IsValid)

                {

                    // Code

                }}

     [HttpPost]

    public ActionResult Regiter(RegisterModel model, string returnUrl) {

    if (ModelState.IsValid)

                {

                    // Code

                }}

    Cuando llega a la accion los parametros estan vacios. Pudiera tomar todas las propiedades de Login2Model y RegisterModel y colocarlas en una clase única pero cuando pase por el ModelState.IsValid lanzara error.

    Gracias por la ayuda de antemano

    domingo, 9 de febrero de 2014 3:23

Todas las respuestas

  • hola

    por supuesto que estan vacios sino poens nada dentro de los Html.BeginForm como para que se envie algo

    @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { id = "frmInput})) 
    { 
    	@Html.TextBoxFor(x=>x.UserName)
    	@Html.TextBoxFor(x=>x.Password)
    	
    	<input type="submit" value="login" />
    
    }

    en el otro form tambien deberias poner algo

    el unico tema es que para una misma view no puedes definir dos model

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    domingo, 9 de febrero de 2014 4:38
  • hola

    por supuesto que estan vacios sino poens nada dentro de los Html.BeginForm como para que se envie algo

    @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { id = "frmInput})) 
    { 
    	@Html.TextBoxFor(x=>x.UserName)
    	@Html.TextBoxFor(x=>x.Password)
    	
    	<input type="submit" value="login" />
    
    }

    en el otro form tambien deberias poner algo

    el unico tema es que para una misma view no puedes definir dos model

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Hola y gracias

    Claro eso es asi, solo puse la estructura para que se entienda, ambos form tienen sus controles...

    domingo, 9 de febrero de 2014 17:19