我有一个MVC应用程序。
我有一个View A,它呈现部分View _B。 视图A具有一个逻辑,用于定义何时显示部分视图_B以及何时不显示:
@if (!(bool)ViewData["PasswordChanged"])
{
<div style="margin-top:20px;">
<div>
@Html.Partial("~/Views/_B.cshtml");
</div>
</div>
}
else
{
<div id="redirect" style="margin-top:20px;">
<div style="color:green;">
@ViewBag.Message
</div>
<div>
Please wait while you are redirected...
</div>
</div>
我正在寻找能够帮助我显示重定向div
5秒然后重定向到主页View
的解决方案。
以下是表单提交时调用的方法。在这个方法中,当我的withRedirect
标志为真时,我可能需要有某种逻辑。目前,我只是重定向到MainPage
,但我需要显示Redirection Success
消息5秒钟。
[HttpPost]
public ActionResult Index(ChangePasswordModel model, string returnUrl*/)
{
ViewData["PasswordChanged"] = false;
bool withRedirect = Convert.ToBoolean(Session["WithRedirect"].ToString());
if (ModelState.IsValid)
{
string currentPassword = model.CurrentPassword;
string newPassword = model.NewPassword;
string confirmPassword = model.ConfirmPassword;
if (ChangePasswordModel.IsPasswordValid(newPassword))
{
try
{
ChangePasswordModel cpm = ChangePasswordModel.ChangePassword(model);
if (cpm.SuccessMessage.Length > 0)
{
ViewData["PasswordChanged"] = true;
ViewBag.Message = cpm.SuccessMessage;
if (withRedirect)
{
return Redirect(returnUrl ?? Url.Action("Index", "MainPage"));
}
}
else
{
ModelState.AddModelError("", cpm.FailMessage);
}
}
catch(Exception error)
{
ModelState.AddModelError("", error.Message);
}
}
else
{
ModelState.AddModelError("", "New password does not meet minimum requirements");
}
}
if (withRedirect)
{
return View("ForceChangePassword");
}
else
{
return View("ChangePassword");
}
}
我怎样才能在MVC中做类似的事情
答案 0 :(得分:0)
在Controller中,重定向到呈现部分视图的视图:
if (withRedirect)
{
return View("ViewA");
}
并在视图A中显示&#34;重定向&#34;我们可以通过
来做到这一点1
<div style="margin-top:20px;">
<div style="color:green;">
@ViewBag.Message
</div>
<div>
Please wait while you are redirected...
<script>
window.setTimeout(function () {
location.href = "MainPage";
}, 5000);
<script>
</div>
</div>
2
<div style="margin-top:20px;">
<meta http-equiv="refresh" content="5;url=MainPage">
<div style="color:green;">
@ViewBag.Message
</div>
<div>
Please wait while you are redirected...
</div>
</div>