Mvc 5 открытый модал в макете для регистра httppost идет не так, как надо - PullRequest
0 голосов
/ 16 октября 2018

У меня есть частичное представление для моего модального окна. В частичном виде я создаю свою регистрационную форму. Я открываю модальный регистр и нажимаю регистр, он не попадает в нужную цель в моем homecontroller.

И вторая проблема, если я нажимаю кнопку регистрации, мой необязательный параметр всегда отображается как «регистр»

var domainLang = RouteData.Values["languageKey"] as string;

Мой макет:

<div class="modal fade login" id="loginModal">
<div class="modal-dialog login animated">
    <div class="modal-content">
        @{Html.RenderAction("RegisterModal", "Home");}

    </div>
</div>

Мое частичное представление:

   <div class="form loginBox">

            @using (Html.BeginForm("RegisterModal", "Home", FormMethod.Post))
            {
                @Html.AntiForgeryToken()
                @Html.TextBoxFor(m => m.UserName, new { @class = "form-control", @placeholder = "Kullanıcı Adı" })
                @Html.TextBoxFor(m => m.CepNo, new { @class = "form-control", @placeholder = "Cep Numaranız" })
                @Html.PasswordFor(m => m.Password, new { @class = "form-control", @placeholder = "Şifre" })
                @Html.PasswordFor(m => m.PasswordRepeat, new { @class = "form-control", @placeholder = "Şifre Tekrar" })
                <input class="btn btn-default btn-login" type="submit" value="Register">
            }

        </div>

И мои частичные результаты в моем homecontroller:

  [Route("{languageKey?}/RegisterModal")]
    public PartialViewResult RegisterModal()
    {
        return PartialView();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    [ChildActionOnly]
    [Route("{languageKey?}/RegisterModal")]
    public async Task<PartialViewResult> RegisterModal(RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
             //bla bla
            if (result.Succeeded)
            {
               //bla bla
                return PartialView("HomeIndex", "Home");
            }
            //AddErrors(result);
        }

        return PartialView(model);
    }

1 Ответ

0 голосов
/ 16 октября 2018

Контроллер

public class LoginController : Controller
{
    public LoginController()
    {

    }
    // GET: Login
    public ActionResult Index()
    {
        return View();
    }

    [Route("{languageKey?}/RegisterModal")]
    public PartialViewResult RegisterModal()
    {
        return PartialView();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    //[ChildActionOnly]
    [Route("{languageKey?}/RegisterModal")]
    public  PartialViewResult RegisterModal(RegisterViewModel model)
    {
        if (ModelState.IsValid)
        {
            //bla bla

            //AddErrors(result);
        }

        return PartialView(model);
    }
}

LayOut

  @{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div class="modal fade login" id="loginModal">
        <div class="modal-dialog login animated">
            <div class="modal-content">
                @{Html.RenderAction("RegisterModal", "Login");}

            </div>
        </div>
    </div>
</body>
</html>

PartialView

 @model  WebApplication3.Models.RegisterViewModel 
<div class="form loginBox">


    @using (Html.BeginForm("RegisterModal", "Login", FormMethod.Post))
    {
        @Html.AntiForgeryToken()
        @Html.TextBoxFor(m => m.UserName, new { @class = "form-control", @placeholder = "Kullanıcı Adı" })
        @Html.TextBoxFor(m => m.CepNo, new { @class = "form-control", @placeholder = "Cep Numaranız" })
        @Html.PasswordFor(m => m.Password, new { @class = "form-control", @placeholder = "Şifre" })
        @Html.PasswordFor(m => m.PasswordRepeat, new { @class = "form-control", @placeholder = "Şifre Tekrar" })
        <input class="btn btn-default btn-login" type="submit" value="Register">
    }

</div>
...