如何防止验证程序在HttpGet上运行?

时间:2016-12-25 14:16:14

标签: c# asp.net-mvc validation controller .net-core

阅读this very helpful answer后,我修改了一对方法,允许它们接受相同的视图模型:

[ActionName("AddressCorrection"), HttpGet]
public IActionResult AddressCorrectionGet(AddressCorrectionViewModel model)
{
    return View(model);  // was return View();
}

[ActionName("AddressCorrection"), HttpPost]
[ValidateAntiForgeryToken]
public IActionResult AddressCorrectionPost(AddressCorrectionViewModel model)
{
    if (ModelState.IsValid)
    {
        return View("Index", new ApplicationViewModel { SuccessMessage = "That worked." });
    }

    model.ErrorMessage = "Something went wrong";
    return View(model);
}

问题是,在return View(model);中调用AddressCorrectionGet现在将调用视为POST种类。具体来说,AddressCorrection.cshtml上的验证器运行。我没有看到准备输入的空白​​表单,而是看到一个包含一堆“必填字段缺失”消息的表单。

在这种情况下,如何阻止View运行验证程序?或者在更一般的情况下,View如何知道它应该与不应该运行验证器(我认为这只是基于请求方法是GET还是POST。显然是错误的。 ),如何明确告诉视图运行或不运行验证器?

1 个答案:

答案 0 :(得分:2)

return View(model);

之前使用onRest