c# - 如何检查子模型状态是否有效,而不是检查 asp.net 核心中的主模型状态?
问题描述
模型:这里SubjectDetailsModel
包含子模型StudentDetailsModel
public class SubjectDetailsModel
{
[Key]
public int Id { get; set; }
[Required]
public string SubjectName { get; set; }
[Required]
public string SubjectCode { get; set; }
public StudentDetails studentDetails { get; set; }
}
public class StudentDetailsModel
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string EnrollmentNumber { get; set; }
[Required]
public string Gender { get; set; }
[Required]
public string City { get; set; }
}
控制器
SubjectDetailsModel
当我在 post 方法中作为参数传递时让我知道Index
,这次我只需要检查StudentDetailsModel
状态是否有效。那么我该怎么做呢?
public class HomeController : Controller
{
[HttpGet]
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Index(SubjectDetailsModel model)
{
//Here i need to check StudentDetails ModelState.Isvalide instead of SubjectDetails model. OR
//How can the check sub-model state is valid or not instead of checking the main model state?
if (ModelState.IsValid) // This condition checking SubjectDetailsModel State.
{
// Insert recorde
}
return View(model);
}
}
看法
@model SubjectDetailsModel
<form method="post" asp-action="Index" asp-controller="Home">
<input asp-for="Id" hidden />
<input asp-for="SubjectName"/>
<input asp-for="SubjectCode" />
<input asp-for="studentDetails.Name"/>
<input asp-for="studentDetails.Gender" />
<input asp-for="studentDetails.City" />
<button type="submit">Submit</button>
</form>
解决方案
如果您还需要在邮件模型上放置验证属性,那可能有点棘手。对于您的情况,我建议使用 Fluent Validation NuGet 包,这将有助于在单独的类中编写您的自定义验证代码。
如果看起来像这样:
public class SubjectDetailsModelValidator : AbstractValidator<SubjectDetailsModel>
{
public SubjectDetailsModelValidator()
{
RuleFor(x => x.studentDetails.Name).NotEmpty();
RuleFor(x => x.studentDetails.EnrollmentNumber).NotEmpty();
RuleFor(x => x.studentDetails.Gender).NotEmpty();
RuleFor(x => x.studentDetails.City).NotEmpty();
}
}
这里是文档,看看:https ://docs.fluentvalidation.net/en/latest/aspnet.html
推荐阅读
- php - php多维数组计数重复值并添加对应值
- python - Python
.py 不选择修改 .py - python - 调用实例名称时隐式调用方法
- algorithm - 查找丢失条目的地址
- python - 如何在 python 3 中安装 Gurobi?
- tsql - SQL有条件地从行中扣除一些数字
- ios - 带有证书的推送通知到 iOS 错误
- android - Numberpad 的 Android 模拟器键盘输入不再起作用
- python - 如何解决 remove_widget 在 Kivy 的另一个布局中要删除的小部件
- reactjs - 重定向到用户在登录前尝试访问的同一页面 - Reactjs