对于外部 HTML ajaxForm 帖子,MVC ActionResult 返回类型应该是什么

本文关键字:返回类型 ActionResult 是什么 MVC 于外部 HTML ajaxForm 帖子 | 更新日期: 2023-09-27 17:56:02

> idee 是将表单数据从普通的外部 Html 页面发布到另一个 MVC 站点控制器。然后,几乎像使用 Web 服务一样处理数据。

$(document).ready(function () {
  var options = {
    target: '#output',
    success: function(data){ alert('test success'); },
    url: http://localhost:57232/Services/SendFormData,
    dataType:  json
  };
  $('form').ajaxForm(options);
});

操作结果在窗体集合对象中正确接收数据。

[HttpPost]
public ActionResult SendFormData(FormCollection collection)
{
  string s = string.Empty;
  return Json(new { Success = true, Message = "Message!" }, JsonRequestBehavior.AllowGet);
}

此时返回成功结果,但是当它到达外部表单时,我的浏览器在这种情况下,IE会尝试保存或打开返回的字节,而不是调用成功回调函数。

由于此页面是外部页面,而不是 MVC 站点的一部分,因此我无法使用视图或部分视图。返回类型应该是什么?

对于外部 HTML ajaxForm 帖子,MVC ActionResult 返回类型应该是什么

您需要返回部分视图结果:

    [HttpPost]
    public ActionResult Form(Comment feedback)
    {
        if (feedback != null)
        {
            feedback.CommentedOn = DateTime.Now;
            feedback.CommentId += 1;
            if (ModelState.IsValid)
            {
                BlogPost blogpost = db.BlogPosts.Find(feedback.BlogId);
                if (blogpost != null)
                    blogpost.NoofComments += 1;
                db.Entry(blogpost).State = EntityState.Modified;
                db.Entry(feedback).State = EntityState.Modified;
                db.Comments.Add(feedback);
                db.SaveChanges();
                return PartialView("CommentSuccess", feedback);
            }
        }
        return PartialView("Comment", feedback);
    }

同样在AjaxForm中,您需要设置UpdateTargetID:

@using (Ajax.BeginForm("Form", new AjaxOptions() { UpdateTargetId = "FormContainerdiv"     , OnSuccess = "$.validator.unobtrusive.parse('form');", OnComplete = "OnComplete();" }))

在 Ajax 窗体的 targetId 中,您需要提及必须显示响应数据的div id。

<div id="FormContainerdiv">.</div>
@Html.Partial("Comment", item);
</div>