C# 通过Ajax发布时仍然需要TryUpdateModel
只是想知道在通过Ajax调用Post方法时,是否有必要使用TryUpdateModel验证视图模型。我有以下通过jquery Ajax帖子调用的代码:C# 通过Ajax发布时仍然需要TryUpdateModel,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,只是想知道在通过Ajax调用Post方法时,是否有必要使用TryUpdateModel验证视图模型。我有以下通过jquery Ajax帖子调用的代码: [AcceptVerbs(HttpVerbs.Post)] public JsonResult SubmitForm(ViewModel viewModel) { var valid = TryUpdateModel(viewModel); if (valid) { var service = new S
[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请求不会做很多事情 您仍然需要验证任何数据服务器端。没有什么可以阻止某人自己提交请求,或者在浏览器中修改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 });
}