显示警报消息:在“确定”按钮上单击“RedirectToAction”

时间:2017-08-24 15:21:36

标签: asp.net-mvc alert

我尝试在尝试存储过程后显示成功/不成功的消息。我的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);
    }

2 个答案:

答案 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并向用户显示消息。请查看以下帖子中的示例代码

Display message in a toastr after controller method finish

答案 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">&times;</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>
 }