在通过Ajax调用Post方法时,只是想知道使用TryUpdateModel()验证视图模型是否有任何意义。我有以下代码,通过jquery Ajax帖子调用:
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult SubmitForm(ViewModel viewModel)
{
var valid = TryUpdateModel(viewModel);
if (valid)
{
var service = new Service();
var result = _tmpRepository.ExecuteService(viewModel));
return Json(new { Valid = valid, Response = result });
}
return Json(new { Valid = valid });
}
我看到它的方式,我在视图模型上使用数据注释进行不显眼的验证。因此,验证不会发生的唯一方法是,如果禁用了javascript,并且如果禁用了javascript,那么我的Ajax请求就不会那么多了!
答案 0 :(得分:0)
您仍然需要验证任何数据服务器端。没有什么可以阻止某人自己提交请求,或者在浏览器中修改ajax调用的参数。客户端验证应该只是为用户提供便利。
您可以避免使用TryUpdateModel():
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult SubmitForm(ViewModel viewModel)
{
if (ModelState.IsValid)
{
var service = new Service();
var result = _tmpRepository.ExecuteService(viewModel));
return Json(new { Valid = valid, Response = result });
}
return Json(new { Valid = valid });
}