型号:此处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方法中传递Parameter作为参数时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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句