我有这个简单的形式:
@using (Ajax.BeginForm("CreateProductFromAjaxForm","Product" ,
null,
new AjaxOptions() { HttpMethod = "post", OnSuccess = "getresult" },
null))
{
@Html.EditorFor(m => m)
}
而且,为了测试,一个简单的控制器:
[HttpPost]
public JsonResult CreateProductFromAjaxForm(CreateProductModel model)
{
if (!ModelState.IsValid)
{
return new JsonResult()
{
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = new { result = "error" }
};
}
//add to database
return new JsonResult()
{
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = new { result = "success"}
};
}
我已将这些添加到Web.Config:
这些到我的脚本包:
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js",
"~/Scripts/jquery.validate.js",
"~/Scripts/jquery.validate.unobtrusive.js"
));
单击"提交"按钮后,结果页面显示:
{"result":"success"}
我希望我可以在OnSuccess="getresult"处理程序中处理结果,但它似乎不起作用.
基本上我Ajax.BeginForm主要用于客户端验证.
你能告诉我什么是错的吗?
更新:我添加 HttpMethod = "post"了AjaxOptions.
更新:getresult以上定义Ajax.BeginForm如下:
var getresult = function (data) {
alert(data.result);
};