在服务器端验证表单数据完好无损后,如何 return 到表单?
How can I return to the form after server side validation with form data intact?
我有这个验证规则来比较两个日期:
public class EmployeeAbsenceValidator : AbstractValidator<EmployeeAbsence>
{
public EmployeeAbsenceValidator() {
RuleFor(a => a.DateTo)
.GreaterThanOrEqualTo(a => a.DateFrom);
}
}
这是用于验证新创建的缺勤期的控制器代码:
if (ModelState.IsValid)
{
EmployeeAbsenceValidator validator = new EmployeeAbsenceValidator();
ValidationResult result = validator.Validate(employeeAbsence);
if (!result.IsValid)
{
return RedirectToAction("Create", "EmployeeAbsences");
}
else
{
_context.Add(employeeAbsence);
await _context.SaveChangesAsync();
return RedirectToAction("Details", "Employees");
}
}
如果日期无效,我想 return 将所有表单数据完好无损地添加到表单中。我该怎么做?
假设您的 GET
和 POST
操作方法的操作名称相同,然后使用 return this.View( model )
,如下所示:
if (ModelState.IsValid)
{
EmployeeAbsenceValidator validator = new EmployeeAbsenceValidator();
ValidationResult result = validator.Validate(employeeAbsence);
if (!result.IsValid)
{
return this.View( employeeAbsence );
}
else
{
_context.Add(employeeAbsence);
await _context.SaveChangesAsync();
return RedirectToAction("Details", "Employees");
}
}
这会将 return 页面的 HTML 发送到 POST
请求,其中包含任何 @Html.ValidationMessageFor( m => m.Foo
帮助程序(或 <span asp-validator-for="Foo">
帮助程序)中的验证错误消息。
我有这个验证规则来比较两个日期:
public class EmployeeAbsenceValidator : AbstractValidator<EmployeeAbsence>
{
public EmployeeAbsenceValidator() {
RuleFor(a => a.DateTo)
.GreaterThanOrEqualTo(a => a.DateFrom);
}
}
这是用于验证新创建的缺勤期的控制器代码:
if (ModelState.IsValid)
{
EmployeeAbsenceValidator validator = new EmployeeAbsenceValidator();
ValidationResult result = validator.Validate(employeeAbsence);
if (!result.IsValid)
{
return RedirectToAction("Create", "EmployeeAbsences");
}
else
{
_context.Add(employeeAbsence);
await _context.SaveChangesAsync();
return RedirectToAction("Details", "Employees");
}
}
如果日期无效,我想 return 将所有表单数据完好无损地添加到表单中。我该怎么做?
假设您的 GET
和 POST
操作方法的操作名称相同,然后使用 return this.View( model )
,如下所示:
if (ModelState.IsValid)
{
EmployeeAbsenceValidator validator = new EmployeeAbsenceValidator();
ValidationResult result = validator.Validate(employeeAbsence);
if (!result.IsValid)
{
return this.View( employeeAbsence );
}
else
{
_context.Add(employeeAbsence);
await _context.SaveChangesAsync();
return RedirectToAction("Details", "Employees");
}
}
这会将 return 页面的 HTML 发送到 POST
请求,其中包含任何 @Html.ValidationMessageFor( m => m.Foo
帮助程序(或 <span asp-validator-for="Foo">
帮助程序)中的验证错误消息。