【问题标题】:Showing success dialog on HTTP Post在 HTTP Post 上显示成功对话框
【发布时间】:2014-10-01 16:32:39
【问题描述】:

我有一个要求,当用户成功发布一些表单数据时,我想要一个模式对话框来显示 POST 是否成功,以及将视图重置为空状态(如果成功)。

我该怎么做?

我的 POST 逻辑工作正常,但就目前而言,没有反馈表明操作是否成功。

【问题讨论】:

标签: asp.net-mvc


【解决方案1】:

答案 1:

  public ActionResult Index(string message)
    {
        if(!string.IsNullOrEmpty(message)){
        ViewData["successmessage"]=message;  //Or you can use Viewbag
        }
        return View();
    }

 [HttpPost]
 public ActionResult Index()
    {
        ...............
        return RedirectToAction("Index",new{ message="Saved successfully" });
    }

只需在使用 Javascript 警告框查看时提醒 ViewData["successmessage"]

在查看时只显示警告框为alert('@ViewData["successmessage"]')

答案 2:

 [HttpPost]
 public ActionResult Index()
    {
        ...............
        TempData["successmessage"] = "Saved successfully";
        return RedirectToAction("Index");
    }

查看(索引.cshtml):-

@{
var message = TempData["successmessage"] ?? string.Empty;
}

<script type="text/javascript">
var message = '@message';
if(message)
    alert(message);
</script>

【讨论】:

  • 在视图中使用 TempData 如果你在同一个 action 方法中设置它是没有用的,在这种情况下你最好使用 ViewData/ViewBag 或模型属性。 TempData 用于两个动作方法之间,它使用会话。要正确使用 TempData,必须在您的 POST 方法中设置它,然后在您的 GET 方法中读取。参见例如Using Tempdata in ASP.NET MVC - Best practice
  • 再次阅读我的评论。您在 POST 中设置一个查询字符串参数,重定向到 GET,然后设置 TempData(使用会话),然后您在 在该视图中读取它。这不是正确使用 TempData。
  • 谢谢。现在就试一试吧。
【解决方案2】:

首先,你必须在前端添加一个监听器,主要是 jquery.ajaxSetup 函数。

然后你需要让前听者知道这是显示对话框的成功请求,添加特殊代码或类似的东西。

C#代码:

return Json(new{Code = 200, Message = "some text"}, JsonRequestBehavior.AllowGet);

Javascript 代码:

$.ajaxSetup({
    success: function(xhr){
       var response = JSON.parse(xhr.responseText);
       if(response & response.Code == 200 && response.Message) {
           // pop up dialog with message here
       }
    }
})

【讨论】:

  • 这如何知道之前的 POST 是否成功以及显示什么信息?问题不是“如何执行 AJAX 请求”,而是“如何在 Post-Redirect-Get 中传递通知以获取”
  • 问题不在于post请求成功后如何弹出模态对话框?
  • 不是根据问题的最后一句。
  • 我想他想添加一个插件,以便在成功发布后自动弹出对话框,而无需在每个请求中添加额外的代码。
猜你喜欢
  • 2015-05-24
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 2013-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多