C# 通过Ajax发布时仍然需要TryUpdateModel

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

只是想知道在通过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请求不会做很多事情

您仍然需要验证任何数据服务器端。没有什么可以阻止某人自己提交请求,或者在浏览器中修改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 });
}