通过Ajax发布时仍需要TryUpdateModel

时间:2013-12-11 17:43:27

标签: 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 Service();
        var result = _tmpRepository.ExecuteService(viewModel));

        return Json(new { Valid = valid, Response = result });
    }
    return Json(new { Valid = valid });
}

我看到它的方式,我在视图模型上使用数据注释进行不显眼的验证。因此,验证不会发生的唯一方法是,如果禁用了javascript,并且如果禁用了javascript,那么我的Ajax请求就不会那么多了!

1 个答案:

答案 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 });
}