我尝试在尝试存储过程后显示成功/不成功的消息。我的Save ActionResult在Save按钮上被调用 - 但是在我重定向回索引之前我想显示一个消息框。有没有办法先返回一个视图,然后是RedirectToAction?
保存按钮指向:
[HttpPost]
public ActionResult Save(string submit, Models.KnownIssues knownIssue)
{
UpdateKnownIssue(knownIssue);
InsertKnownIssue(knownIssue);
return RedirectToAction("Index");
}
viewbag提醒:
public ActionResult Edit(KnownIssues knownIssue, string submit)
{
if (UpdateKnownIssue(knownIssue))
{
ViewBag.ShowAlert = "<script>alert('Successfully Edited'); window.location.href = '/KnownIssues';</script>";
} else
{
ViewBag.ShowAlert = "<script>alert('Unseccessful. Try again.');</script>";
}
return View(knownIssue);
}
答案 0 :(得分:1)
您可以将表单提交转换为ajax表单提交,并从您的操作方法返回JSON响应。在您的ajax呼叫成功事件中,您可以向用户显示该消息,然后使用javascript进行重定向。
您可以使用以下jQuery代码来提交表单提交。
$(function() {
$("form").submit(function(e) {
e.preventDefault();
var f = $(this);
$.post(f.attr("action"), f.serialize(),function(res) {
if(res.Status==="success")
{
alert(res.Message);
window.location.href="your new url here";
}
});
});
});
并更新您的操作方法以返回json响应
[HttpPost]
public ActionResult Save(string submit, Models.KnownIssues knownIssue)
{
// your code
if (Request.IsAjaxRequest())
{
return Json(new {Status = "success", Message="Succesfully updated"});
}
return RedirectToAction("Index");
}
另一个选项是在下一页显示消息。为此,您可以使用当前的表单提交方法(不需要ajax)并使用TempData来存储消息。在下一个操作方法中,在视图中读取TempData并向用户显示消息。请查看以下帖子中的示例代码
答案 1 :(得分:1)
试试这个:
return RedirectToAction("Index", "Home", new { ac = "success" });
在索引视图中执行(NB:使用引导程序警报):
@{
var parameter = Request.QueryString["ac"];
//Check parameter here and display Message
if (parameter == "success")
{
<div class="alert alert-success alert-dismissable">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<strong><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> Record Added Successfully.</strong>
</div>
}
}
编辑:
更好的方法可能是使用TempData,尤其是如果您不想在网址中使用变量。
您可以在控制器中设置TempData,如:
TempData["SuccessMessage"] = "Your Success Message";
在视图中通过检查TempData中是否有任何内容显示消息:
@if (TempData["SuccessMessage"] != null)
{
<div class="alert alert-success alert-dismissable">
<strong>@TempData["SuccessMessage"]</strong>
</div>
}