【发布时间】:2016-09-26 02:15:40
【问题描述】:
当我在视图组件中提交包含不正确数据的表单时,我的视图组件不会在页面上显示任何错误。
那么视图组件是否有可能返回验证错误?
查看组件
<div class="card-block">
<form class="form-inline-custom" asp-controller="BragOption" asp-action="Create" method="post" role="form">
<div class="form-group">
<label asp-for="CreateBragOptionViewModel.PeriodFrom">From <span asp-validation-for="CreateBragOptionViewModel.PeriodFrom" class="alert-danger"></span></label>
<input asp-for="CreateBragOptionViewModel.PeriodFrom" class="form-control">
</div>
<div class="form-group">
<label asp-for="CreateBragOptionViewModel.PeriodTo">To <span asp-validation-for="CreateBragOptionViewModel.PeriodTo" class="alert-danger"></span></label>
<input asp-for="CreateBragOptionViewModel.PeriodTo" class="form-control">
</div>
<div class="form-group">
<button type="submit" class="btn btn-block btn-primary">START VOTING PERIOD</button>
</div>
</form>
</div>
动作控制器
[HttpPost]
public IActionResult Create(BragOptionViewModel model)
{
if (! ModelState.IsValid)
{
return View(nameof(BragManagementController.Index), model);
}
if (! _bragOptionService.IsVotingPeriodFromValid(model.CreateBragOptionViewModel))
{
ModelState.AddModelError("PeriodFrom", "The date you have entered should not be in the future");
return View(nameof(BragManagementController.Index), model);
}
if (!_bragOptionService.IsVotingPeriodToValid(model.CreateBragOptionViewModel))
{
ModelState.AddModelError("PeriodTo", "The date you have entered should not be in the past");
return View(nameof(BragManagementController.Index), model);
}
_bragOptionRepository.CreateVotingPeriod(_bragOptionService.LoadBragOption(model.CreateBragOptionViewModel));
return RedirectToAction(nameof(BragManagementController.Index), "BragManagement");
}
查看模型
public class CreateBragOptionViewModel
{
[DataType(DataType.Date)]
public DateTime PeriodFrom { get; set; }
[DataType(DataType.Date)]
public DateTime PeriodTo { get; set; }
}
public class BragOptionViewModel
{
public CreateBragOptionViewModel CreateBragOptionViewModel { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{MMM 0:d, yyyy}", ApplyFormatInEditMode = true)]
public DateTime VotingPeriodTo { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{MMM 0:d, yyyy}", ApplyFormatInEditMode = true)]
public DateTime VotingPeriodFrom { get; set; }
}
【问题讨论】:
-
为什么要在每个属性前加上 CreateBragOptionViewModel 前缀,我相信你不必加,你应该包括 JQuery Ajax JS 文件来启用客户端验证
标签: asp.net asp.net-core asp.net-core-mvc