Несколько форм в одном представлении (asp.net mvc)

#asp.net #asp.net-mvc #forms #validation #asp.net-mvc-4

#asp.net #asp.net-mvc #формы #проверка #asp.net-mvc-4

Вопрос:

Я пытаюсь создать форму регистрации мастера (многоступенчатая регистрация) в asp.net mvc.

У меня есть 2 метода на моем контроллере (Login и Register), потому что я не хочу, чтобы URL-адрес менялся.

Ну, на первой странице (логин) У меня есть 2 формы (Login и registerStep1).

Я не знаю, как различать формы в моем контроллере.

Я пробовал использовать название кнопки, но я НЕ ЗНАЮ, ПОЧЕМУ это работает только в Chrome.

Firefox получает правильное имя кнопки входа в систему, но дает мне нулевое значение, когда я пытаюсь с помощью кнопки регистрации. Я действительно не знаю, почему. Обе формы имеют одинаковую структуру.

Форма регистрации:

 model Project.ViewModels.LoginViewModel

@using (Html.BeginForm("Login", "User", FormMethod.Post, new { @class = "form-horizontal" }))
{
    @Html.AntiForgeryToken()
    <span class="field-validation-error">amp;nbsp;@ViewBag.RegisterError</span>

    <p>@Html.TextBoxFor(m => m.Step1.Email, new { @class = "noround input-block-level", placeholder = "Your Email" })
        @Html.ValidationMessageFor(m => m.Step1.Email)
        <small>amp;nbsp;</small>
    </p>
    <p>@Html.TextBoxFor(m => m.Step1.Document, new { @class = "noround input-block-level", placeholder = "Your document" })
        @Html.ValidationMessageFor(m => m.Step1.Document)
        <small>amp;nbsp;</small>
    </p>
    <p>
        <button type="submit" name="buttonName" value="Register" class="noround btn">CONTINUE</button>
    </p>
}
  

Форма входа такая же, но с электронной почтой и паролем.

и мой контроллер:

  [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Login(LoginViewModel model, string buttonName)
        {
            if (buttonName == "Register")
            {   
                if (ModelState.IsValid)
                {
                    bool isValid = true;

                    if (!IsUniqueEmail(model.Step1.Email))
                    {
                        isValid = false;
                    }

                    if (!IsUniqueCPF(model.Step1.Document))
                    { 
                    isValid = false;
                    }

                    if (isValid)
                    {
                        TempData["WizardModel"] = model;
                        return RedirectToAction("Register");
                    }
                }
            }
            else if (buttonName == "Login")
            {
..//the rest
  

Что я могу сделать?

Ответ №1:

 <button type="submit" name="buttonName" value="Login" class="noround btn">Login</button
  

Добавить кнопку входа на страницу

создайте одинаковые поля для регистрации и для входа в систему

и с помощью jquery нажмите кнопку входа в систему, чтобы отправить свою форму с вашим именем кнопки

Комментарии:

1. У меня уже есть кнопка входа на странице. Он отправляет сообщения тому же методу, который регистрируется на моем контроллере (логин). Вход в систему отлично работает в любом браузере. Просто кнопка регистрации, которая каждый раз выдает мне null в Firefox. Я избегал отправки своих форм с помощью jQuery, но я попробую

2. Ну, я действительно новичок в Интернете, но мне нужно перенаправление после отправки (от входа до регистрации) Я могу добиться этого только с помощью jquery?

Ответ №2:

В итоге я использовал:

 <input type="hidden" name="buttonName" value="Register">
  

в форме.
Это работает для меня в любом браузере.

Спасибо