【问题标题】:Ajax Forms in ASP.NET MVCASP.NET MVC 中的 Ajax 表单
【发布时间】:2009-04-29 12:37:09
【问题描述】:

我有一个使用 ASP.NET MVC 收集数据的表单。它看起来像这样:

[AcceptVerbs(HttpVerbs.Post)] [AutoValidate] public ActionResult Contact(ContactMessage msg) { if(ModelState.IsValid) { try { this.messengerService.SendMail(msg); RedirectToAction("Index"); } catch (Exception ex) { ModelState.AddUnhandledError(ex); } } return View(msg); }

我正在使用 asp.net mvc 验证和模型状态验证来处理显示的无效规则消息。一切正常。

现在我想使用 ajax 表单提交操作,并在操作成功完成时显示成功消息。我尝试使用下面的代码,它在操作成功时工作,但是当它失败时(模型有错误),整个页面在显示成功消息的DIV中再次呈现!这可能吗?

[AcceptVerbs(HttpVerbs.Post)] [AutoValidate] public ActionResult Contact(ContactMessage msg) { if(ModelState.IsValid) { try { this.messengerService.SendMail(msg); return Content("Message sent"); } catch (Exception ex) { ModelState.AddUnhandledError(ex); } } return View(msg); }

【问题讨论】:

    标签: asp.net-mvc asp.net-ajax


    【解决方案1】:

    您的问题是返回正常视图的最后一行。

    试试这个:

    [AcceptVerbs(HttpVerbs.Post)]
    [AutoValidate]
    public JsonResult Contact(ContactMessage msg)
    {
        if(ModelState.IsValid)
        {
            try
            {
                this.messengerService.SendMail(msg);
                return Json("Message sent");
            }
            catch (Exception ex)
            {
                ModelState.AddUnhandledError(ex);
            }
        }
    
        return Json("There were model errors");
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      相关资源
      最近更新 更多