0
我有一个ExtJs formpanel与standardSubmit:false。在提交时,控制器将验证formdata,因为某些验证将在服务器上进行(例如,检查名称是否唯一)。如果提供的实体无效,则将JsonResult发送给客户端以通知用户哪些字段无效。这是完美的。如果实体有效,它将被存储在数据库中,并且控制器必须将用户重定向到特定的视图。控制器必须提供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小时的解决方案现在,任何人都可以请我帮忙吗?
谢谢,这个主意很有效!我实际上已经在JsonResponse对象中提供了重定向链接,因此它将在服务器上确定。一个非常小的违反MVC范例,但我可以接受。它仍然看起来很干净。 – Paul77 2011-04-07 11:50:05
这是稍微的但IMO AJAX不应该用于控制MVC应用程序中的应用程序流。同样,创建视图应该真正重定向到索引而不是返回HTML。 – 2011-04-07 12:55:30
确保javascript重定向使用'href'属性来使其在所有浏览器中都能正常工作。例如。 'window.location.href = indexLink' – Eric 2011-08-10 21:41:31