Затруднявам се в тази част от последните 3 дни. Имам страница _Layout, в която зареждам частичен изглед за влизане в модален div при щракване върху бутона за влизане. Когато изпратя, ако има валидации от страна на клиента, които ще работят добре и формулярът няма да бъде изпратен, докато не бъдат дадени правилните данни. Проблемът възниква, когато се извърши проверка от страна на сървъра. Ако идентификационните данни са невалидни, ще се пренасочи към същата страница, но модалното няма да се покаже. Когато щракна отново върху бутона за влизане, съобщението за грешка Невалидни идентификационни данни ще се покаже в модален режим. Искам да знам дали това е възможно по начина, по който се опитвам или има някакъв друг начин да го постигна.
Това е част от _Layout Page :
<a class="btn btn-style btn-success btn-lg btn-wid" data-target="#modal" data-toggle="modal" id="flogin"> Login </a>
и модален div на същата страница под долния колонтитул:
<div id="modal" class="modal">
@{Html.RenderPartial("_Login", new Sample.Models.LoginModel());}
</div>
Ето изгледа _Login Partial:
@model Sample.Models.LoginModel
@section Validation {
@Scripts.Render("~/bundles/jqueryval")
}
<section id="Login">
@using (Html.BeginForm("Login", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "LoginForm", ReturnUrl = ViewBag.ReturnUrl }))
{
<div class="modal-content wrap col-md-4 col-xs-12 col-sm-12 col-md-offset-4">
@Html.AntiForgeryToken()
<div class="row">
<button type="button" class="close" id="btnLoginModalClose" style="margin-top:-15px" data-dismiss="modal" aria-hidden="true">×</button>
</div>
<div class="row-fluid">
<div id="LoginDialog" class="col-md-12">
<div class="modal-header">
<h3 id="login" class="modal-title">
Freshers Login
</h3>
<div class="ui-state-error-text">
@if (TempData["ModelState"] != null)
{
@TempData["ModelState"]
}
</div>
</div>
<div class="modal-body">
<div class="form-group">
<span class="ico-email"></span>
@Html.TextBoxFor(m => m.UserName, new { id = "floginEmail", placeholder = "Email", type = "email", @class = "input-lg ipt ip-email" })
<div class="text-danger">
@Html.ValidationMessageFor(model => model.UserName)
</div>
</div>
<div class="form-group">
<span class="ico-pwd"></span>
@Html.TextBoxFor(m => m.Password, new { id = "floginPassword", placeholder = "Password", type = "password", @class = "input-lg ipt ip-pwd" })
<a href="/bg#" id="loginpswdshow" onclick="showhide($(this));"><span style="position:relative" id="sploginpswdshow" class="glyphicon glyphicon-eye-open show"></span></a>
<div class="text-danger">
@Html.ValidationMessageFor(model => model.Password)
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">
@Html.CheckBoxFor(m => m.RememberMe, new { id = "chkRemember", type = "checkbox", @class = "checkbox" })
</span>
@Html.LabelFor(m => m.RememberMe, new { @class = "form-control" })
</div><!-- /input-group -->
</div>
</div>
<div class="modal-footer" style="margin-top:14px">
<input type="submit" id="btnLogin" name="login" style="margin-top:-5px" class="btn btn-primary pull-left btn-flogin" value="Log-in" />
<div class="row-fluid">
<a class="text-center" style="font-size:medium" onclick="fresherForgotClick();" id="lnkForgot" href="/bg#">Forgot password?</a>
</div>
</div>
<span class="text-info"><strong>Do not have an Account? <a class="btn alert-danger" id="btnCreateAccount">Click here to Create one!</a></strong></span>
</div>
</div>
</div>
}
</section>
и ето моят HomeController, който има резултат _Login Post Action
public ActionResult Login(string redirect, Models.FreshersModel model)
{
if (model.IsValid(model.UserName,model.Password))
{
FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(redirect) || String.Compare(redirect, "none", StringComparison.OrdinalIgnoreCase) == 0)
{
if (redirect != null) Response.Redirect(redirect, true);
}
else
{
return View("Index", "User");
}
}
ModelState.AddModelError("", "Incorrect User Credentials");
//ModelState.AddModelError("", "You entered an invalid password");
TempData["ModelState"] = "Incorrect User Credentials";
//return null;
return RedirectToAction("Index", "Home");
}
Моля, уведомете ме дали е възможно да се постигне това по начина, който следвам.