我有一个JavaScriptResult的post方法的返回类型。我想使用return new JavaScriptResult(){}
对此方法进行模型验证。我怎样才能做到这一点?就像存在模型级别错误时应该返回的那样。
答案 0 :(得分:1)
通常,我会尽量避免使用JavaScriptResult
,因为它往往会将UI内容与控制器内容混合在一起,这往往会违背整个MVC模式。如果我正在做你想要完成的事情,我会将JsonResult
返回给客户端,然后根据结果执行一段代码。这样,如果模型验证失败,您可以返回带有失败结果的JsonResult
,并在客户端知道验证失败。它可以这样实现:
[HttpPost]
public JsonResult Example(ModelName model)
{
// Validate
if (!ModelState.IsValid)
{
return new JsonResult()
{
Data = new { success = false },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
// No validation errors, do stuff
return new JsonResult()
{
Data = new { success = true },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
然后是客户代码:
$.post('/Example', $('#form').serialize(), function (response) {
if (response.success) {
// Success, execute js code here
} else {
// Validation errors
}
}, "json");
但是,如果您需要转到JavaScriptResult
路由并且发生验证错误,我将不返回任何内容或一些会通知用户验证失败的javascript:
[HttpPost]
public JavaScriptResult Example(ModelName model)
{
// Validate
if (!ModelState.IsValid)
{
return new JavaScript("alert("Validation Failed!")");
}
// No validation errors, do stuff
return new JavaScript("js to return here if validation passes");
}