我可以利用ASP吗?. NET Core MVC框架来验证视图模型,以便验证摘要显示在最初查看表单以及提交?



给定一个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
}

也许我可以……(我自己找不到这些问题的可靠答案)

  1. 在调用return View(viewModel)之前手动绑定并验证viewModel ?
  2. 利用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);
}

最新更新