我有一个带有standardSubmit的错误的ExtJs formpanel:false。在提交时,控制器将验证formdata,因为将在服务器上进行一些验证(例如,检查名称是否唯一)。如果提供的实体无效,则会向客户端发送JsonResult以通知用户哪些字段无效。这非常有效。如果实体有效,它将存储在数据库中,并且控制器必须将用户重定向到特定视图。
结果是视图提供的HTML被发送到需要JSON响应的客户端。显然,这不起作用。
public override ActionResult Create(FormCollection formCollection)
{
Models.Relatie relatie = Repository.CreateNew();
SetFormValues(relatie, formCollection);
if (ModelState.IsValid)
{
_relatieService.CreateRelation(relatie);
ViewResult view = View("Index");
return view; //pumps html while client expects JSON
}
else
{
JsonResult json = Json(new { success = false, errors = ModelState.ToDictionary() });
return json;
}
}
我一直在寻找解决方案超过8小时,有人可以帮帮我吗?
答案 0 :(得分:0)
发回一个success
属性设置为true的JSON对象。在AJAX调用的成功处理程序中检查这一点,并使用javascript(window.location = indexLink)重定向。
值得注意的是,如果您想要生成链接服务器端并且您正在使用Web表单视图引擎,则需要执行以下操作以在页面中嵌入脚本变量:
<%= "<script language=\"javascript\"> var indexLink = \"" + Url.Action("Index") + "\";</script>" %>
然后,您可以在页面中使用indexLink
。