Razor ViewData.ModelState.IsValid检查一个视图中包含的所有(部分)表单

Razor ViewData.ModelState.IsValid检查一个视图中包含的所有(部分)表单,razor,view,modelstate,Razor,View,Modelstate,我的主页上有两个表单,一个是联系表单,一个是比赛表单,这两个表单都是部分表单,都有单独的控制器和模型 在这两部分中,我都有下面的代码,如果电子邮件发送失败,它会显示一条错误消息 if (!ViewData.ModelState.IsValid) { <div class="form-failure"> <h4><i class="fa fa-close"></i>@Model.FailureTitle</h4>

我的主页上有两个表单,一个是联系表单,一个是比赛表单,这两个表单都是部分表单,都有单独的控制器和模型

在这两部分中,我都有下面的代码,如果电子邮件发送失败,它会显示一条错误消息

if (!ViewData.ModelState.IsValid)
{
    <div class="form-failure">
        <h4><i class="fa fa-close"></i>@Model.FailureTitle</h4>
        @Html.Raw(Model.FailureContent)
    </div>
问题是两个表单上都会显示错误,因为!ViewData.ModelState.IsValid将为这两个对象返回相同的结果。如何确保错误仅显示在提交请求的表单上

}

您可以将其存储在ViewData中

if (emailService.Send(EmailMessageBuilder.BuildUserEmail(model.FullName, model.EmailAddress, model.PhoneNumber)) != EmailState.Success)
{
    ViewData["Form"] = "Form1";
    ModelState.AddModelError("Email", "There was a problem sending the Email. Please try again later, or call us.");
    return CurrentUmbracoPage();
}
然后检查html以查看哪个表单无效

if (!ViewData.ModelState.IsValid && ViewData["Form"] == "Form1" )
{
     ....
}
if (!ViewData.ModelState.IsValid && ViewData["Form"] == "Form1" )
{
     ....
}