如何在提交后返回消息

时间:2010-05-10 07:20:44

标签: asp.net-mvc

我有以下代码无法正常工作。我希望从控制器重新启动并使用警报显示控制器返回的值。

 $('#change').dialog({
            autoOpen: false,
            width: 380,
            buttons: {
                "Close": function() {
                    $(this).dialog("close");
                },
                "Accept": function() {
                    var test = $("#ChangePasswordForm").submit();
                    alert(test);
                }
            }
        });

在我的控制器中,我想返回一个字符串

  [AcceptVerbs(HttpVerbs.Post)]
    public string ChangePassword(string Name)
    {
        var msg = "Cool!";
if (name != null)


return msg;
                }

我该怎么做?

4 个答案:

答案 0 :(得分:1)

您的控制器需要返回一个派生自ActionResult的类型。

如果要显示简单的确认消息,可以将其添加到ViewData包中,如下所示:

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ChangePassword(string name)
    {
        if (!string.IsNullOrEmpty(name))
        {
            ViewData["msg"] = "Cool";
        }
        return View();
    }

然后,在您的视图中,检查值的存在,并显示它是否存在:

<% if(ViewData["msg"] != null) { %>
    <script type="text/javascript">alert('<%= ViewData["msg"].ToString() %>')</script>
<%} %>

答案 1 :(得分:1)

  [AcceptVerbs(HttpVerbs.Post)]
  public ActionResult ChangePassword(string Name)
  {
        var msg = "Cool!";
        if (name != null)
        {       
            return Content(msg, "text/plain");
        }
        else
        {
            return Content("Error...", "text/plain");
        }
   }

答案 2 :(得分:1)

首先,我假设您正在使用ajax表单。我还假设你有一个或什么东西可以放入你的文字。您所要做的就是将UpdateTargetId设置为指向要使用文本更新的元素的id

<%using (Ajax.Form("ChangePasswordForm", new AjaxOptions { UpdateTargetId = "result" })) %>

[HttpPost]
public ContentResult ChangePassword(string s)
{
      var msg = "Cool!";
      if ( s != null ? return Content(msg, "text/plain") : return Content("An error has occured", "text/plain") );
}

答案 3 :(得分:0)

不要提交表格,因为它会执行回发并导致删除对话框。

而是向Controller Action执行AJAX帖子并返回包含数据的JsonResult。

从Ajax请求中获取成功回调,并调用alert从Json对象传递数据。

点击提交后,您可能不会使用加载掩码,以便用户知道正在发生的事情。