Asp.net-Mvc

在 Asp.Net MVC 中禁用模型驗證

  • October 21, 2016

如何禁用 Controller 中單個 Action 的模型驗證?或者我可以通過在某處啟動時註冊模型類型來為每個模型執行此操作嗎?

我希望 ModelBinder 綁定到模型,但之後它不應該執行模型驗證。

我不想進行驗證的原因是因為我試圖將邏輯從控制器移動到服務層,該服務層將負責驗證模型,因為我不能假設傳遞給服務的模型包含有效數據。

據我了解,這是推薦的方法(控制器中沒有邏輯),所以我覺得有點奇怪,我似乎找不到任何關於如何禁用模型驗證(每個操作或每個模型類型)的資訊。

請注意,我不想禁用整個 Web 應用程序的模型驗證(通過刪除驗證提供程序),並且我不想禁用檢查發布的惡意程式碼的輸入驗證。


更新

我正在使用 .Net 4.0 和 MVC 3 Preview 1

只需在檢查模型是否有效之前刪除您不需要的項目

ModelState.Remove("Email");
if (ModelState.IsValid)
{
  // your logic
}

我已經用這段程式碼解決了這個問題:

public ActionResult Totals(MyModel model)
{
   ModelState.Clear();
   return View(model);
}

雖然不確定這是正確的方法。

引用自:https://stackoverflow.com/questions/3578781