显示警报消息:在"确定"按钮上,单击"重定向到操作"



我在尝试存储过程后尝试显示成功/不成功的消息。单击"保存"按钮时调用了"保存操作结果" - 但是在重定向回索引之前,我想显示一个消息框。有没有办法先返回视图,然后再返回重定向到操作?

"保存"按钮指向:

[HttpPost]
public ActionResult Save(string submit, Models.KnownIssues knownIssue)
{           
UpdateKnownIssue(knownIssue);
InsertKnownIssue(knownIssue);

return RedirectToAction("Index");
}

视袋警报:

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);
}

试试这个:

return RedirectToAction("Index", "Home", new { ac = "success" });

在索引视图中执行(注意:我使用引导警报(:

@{
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">&times;</a>
<strong><i class="fa fa-exclamation-triangle" aria-hidden="true"></i> Record Added Successfully.</strong>
</div>
}
}

编辑:

更好的方法可能是使用 TempData,尤其是在 url 中不需要变量的情况下。

您可以在控制器中设置温度数据,如下所示:

TempData["SuccessMessage"] = "Your Success Message";

在视图中,通过检查 TempData 中是否有任何内容来显示消息:

@if (TempData["SuccessMessage"] != null)
{
<div class="alert alert-success alert-dismissable">
<strong>@TempData["SuccessMessage"]</strong>
</div>
}

您可以将表单提交转换为 ajax 表单提交,并从操作方法返回 JSON 响应。在 ajax 调用的成功事件中,您可以向用户显示消息,然后使用 javascript 执行重定向。

您可以使用下面的jQuery代码来ajax化表单提交。

$(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 并向用户显示消息。查看下面的帖子以获取示例代码

控制器方法完成后在 Toastr 中显示消息

最新更新