У меня есть окно входа (в Views/Shared/_Login.cshtml) на всех моих страницах, загружаемых через _Layout.cshtml в @ Html.partial form. Кроме того, действие индекса контроллера Home получает все комментарии из базы данных и перечисляет их в Index View. Когда я ввожу неверное имя пользователя или пароль, логин cotroller возвращает сообщение об ошибке, поскольку имя пользователя или пароль неверны. но проблема в том, что после этого действие индекса не вызывается, и ни один из комментариев не появляется. часть _Layout.cshtml:Когда modelstate получает ошибку, ящик входа в макет не отображает действие индекса домашнего контроллера
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="refresh" />
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>
</head>
<body>
<div id="login_box" >
@Html.Partial("_Login",new CSS_Test.ViewModels.CommentViewModel())
</div>
<div id="first_head">
<span class="times"> @{Html.RenderAction("TimeSummary","Home");}</span>
</div>
часть _login.cshtml файла (это слишком долго)
@model CSS_Test.ViewModels.CommentViewModel
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Ajax.BeginForm("_LogIn", "Account", new AjaxOptions { UpdateTargetId = "log" }))
{
if (@Session["UserName"]==null)
{
@Html.TextBoxFor(m =>this.Model.LogModel.UserName, new { @class="UserName", placeholder = "نام کاربری" ,autofocus="autofocus",@Autocomplete= "off"})
<script type="text/javascript">$(function() {
window.onload = $("input.UserName").val("0");
window.onload = $("input.Password").val("");
})
</script>
<br />
@Html.ValidationMessageFor(m => this.Model.LogModel.UserName)
<BR />
мой _Login действие контроллера счета:
public ActionResult _LogIn(CSS_Test.ViewModels.CommentViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.LogModel.UserName, model.LogModel.Password))
{
FormsAuthentication.SetAuthCookie(model.LogModel.UserName, model.LogModel.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
ViewBag.Mess=model.LogModel.UserName+" خوش آمدید";
@Session["UserName"] = model.LogModel.UserName;
return View(model);
}
ViewData.ModelState.AddModelError("Error", "نام کاربری یا رمز عبور اشتباه است");
}
return View(model);
}
Индекс действия Домашняя страница контроллер:
public ActionResult Index()
{
MyContext mydb =new MyContext("MyContext");
var All_Comments = mydb.Comments.ToList<Comment>();
CommentViewModel mymodel = new CommentViewModel()
{
all_comments=All_Comments
};
return View(mymodel);
}
Пожалуйста, расскажите мне, как я могу перенаправить действие индекса после отправки сообщения о возврате модели состояния, чтобы на странице индекса отображалось как сообщение об ошибке, так и комментарии. Надеемся передать мою проблему. Примите любую помощь.