给定一个ASP。. NET Core MVC控制器方法,没有参数。
给定一个视图模型被创建,并在控制器方法中部分使用第三方数据填充。
假设我的c#模型已经为属性验证正确定义了数据注释。
是否有可能利用ASP。. NET Core MVC框架验证我的视图模型,使Html.ValidationSummary()
显示错误从预填充的视图模型上的初始视图的形式(而不是只显示在提交的形式)?
控制器:
public IActionResult ViewForm()
{
MyViewModel viewModel = new MyViewModel();
// Pre-populate view model with some data (which may be invalid).
viewModel.MyRequiredProperty = someThirdPartyDataSource.Value;
//I want to validate here so pre-populated data errors are shown
//in the views "Html.ValidationSummary()".
return View(viewModel);
}
模型:
public class MyViewModel
{
public MyObjectToValidate MyObject { get; set; }
}
public class MyObjectToValidate
{
[Key]
public int ID { get; set; }
[Required(ErrorMessage="Property is required.")]
public string MyRequiredProperty
}
也许我可以……(我自己找不到这些问题的可靠答案)
- 在调用
return View(viewModel)
之前手动绑定并验证viewModel ? - 利用
ViewResult myViewResult = View(viewModel);
?
ControllerBase
(所有控制器都隐式地继承它)有一个TryValidateModel
方法,它应该完全满足您的需要。所以:
public IActionResult ViewForm()
{
MyViewModel viewModel = new MyViewModel();
// Pre-populate view model with some data (which may be invalid).
viewModel.MyRequiredProperty = someThirdPartyDataSource.Value;
//I want to validate here so pre-populated data errors are shown
//in the views "Html.ValidationSummary()".
TryValidateModel(viewModel);
return View(viewModel);
}