使用 MVC 显示验证错误
Showing Validation Errors using MVC
我一直在尝试使用 MVC 的固有验证框架来显示验证错误。我正在为我的控制器使用以下代码:
[HttpPost]
public ActionResult SaveApplication(ApplicationModel application)
{
if (!ModelState.IsValid)
{
return View("New",application);
}
ApplicationBLL.SaveApplication(application);
return Content(string.Empty);
}
虽然我的观点是这样的:
<tr>
<td>Name</td>
@Html.ValidationSummary(true)
<td>@Html.TextBoxFor(m => m.Name)</td>
<td>@Html.ValidationMessageFor(m => m.Name, "Name is required")</td>
</tr>
以下是模型 class 的样子:
public class ApplicationModel
{
public int ApplicationId { get; set; }
public string ApplicationNumber { get; set; }
[Required]
public string Name { get; set; }
public DateTime EventDate { get; set; }
public string EventAddress { get; set; }
}
我的模型对名称 属性 进行了 [必需] 验证,当我将调试器放在我的控制器上时,它识别出 ModelState 无效并且 returns 回到视图,但我的页面上没有看到任何错误。我可能遗漏了一些非常微不足道的东西,因为这是我第一次使用 MVC 的验证框架。
我想补充的一件事是,我用 Ajax Post 调用 Controller 会导致这种异常吗?
<td>@Html.ValidationMessageFor(m => m.Name, "Name is required")</td>
此辅助方法生成具有以下属性的跨度:
data-valmsg-replace="false"
意味着您将在您的字段下方看到一条静态错误消息,但您将无法使用模型中定义的错误消息更改该字段。同样,您会在您的字段下看到一些静态错误消息。
如果@stephen muecke 的解决方案有效,则意味着您的问题不是将 ErrorMessage 添加到错误的位置。我在您的代码和@stephen 的回答之间看到的唯一区别是
return View("New",application);
改为
return View(application);
这意味着您可能从操作中返回了错误的视图。
试试这个,
在您的操作中添加模型错误
ModelState.AddModelError("keyName","Error Message");
使用它在视图中显示
@Html.ValidationMessage("keyName")
我一直在尝试使用 MVC 的固有验证框架来显示验证错误。我正在为我的控制器使用以下代码:
[HttpPost]
public ActionResult SaveApplication(ApplicationModel application)
{
if (!ModelState.IsValid)
{
return View("New",application);
}
ApplicationBLL.SaveApplication(application);
return Content(string.Empty);
}
虽然我的观点是这样的:
<tr>
<td>Name</td>
@Html.ValidationSummary(true)
<td>@Html.TextBoxFor(m => m.Name)</td>
<td>@Html.ValidationMessageFor(m => m.Name, "Name is required")</td>
</tr>
以下是模型 class 的样子:
public class ApplicationModel
{
public int ApplicationId { get; set; }
public string ApplicationNumber { get; set; }
[Required]
public string Name { get; set; }
public DateTime EventDate { get; set; }
public string EventAddress { get; set; }
}
我的模型对名称 属性 进行了 [必需] 验证,当我将调试器放在我的控制器上时,它识别出 ModelState 无效并且 returns 回到视图,但我的页面上没有看到任何错误。我可能遗漏了一些非常微不足道的东西,因为这是我第一次使用 MVC 的验证框架。
我想补充的一件事是,我用 Ajax Post 调用 Controller 会导致这种异常吗?
<td>@Html.ValidationMessageFor(m => m.Name, "Name is required")</td>
此辅助方法生成具有以下属性的跨度:
data-valmsg-replace="false"
意味着您将在您的字段下方看到一条静态错误消息,但您将无法使用模型中定义的错误消息更改该字段。同样,您会在您的字段下看到一些静态错误消息。 如果@stephen muecke 的解决方案有效,则意味着您的问题不是将 ErrorMessage 添加到错误的位置。我在您的代码和@stephen 的回答之间看到的唯一区别是
return View("New",application);
改为
return View(application);
这意味着您可能从操作中返回了错误的视图。
试试这个,
在您的操作中添加模型错误
ModelState.AddModelError("keyName","Error Message");
使用它在视图中显示
@Html.ValidationMessage("keyName")