可能的解决方法之一是将模型验证移动到控制器操作方法中,而不是在控制器构造函数中。在控制器构造函数中,HTTP上下文(HttpContext)还不存在,因此无法针对特定请求运行模型验证器。
示例代码:
public class MyController : Controller
{
private readonly MyService _service;
public MyController(MyService service)
{
_service = service;
}
public ActionResult MyAction(MyModel model)
{
if (ModelState.IsValid)
{
// Do something
}
return View(model);
}
}
在这个例子中,MyModel
是要验证的模型,ModelState.IsValid
用于检查模型是否通过验证。在控制器操作方法中,模型验证器应该已经初始化并能够进行验证,所以 ModelState.IsValid
应该能够正确工作。