我一直在尝试使用MVC的固有验证框架来显示验证错误。我正在为我的Controller使用以下代码:
[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>
以下是模型类的外观:
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; }
}
我的模型在name属性上有 [Required] 验证,当我将调试器放在我的控制器上时,它识别出ModelState无效并返回到视图但我没有看到任何我页面上的错误。我可能会遗漏一些非常微不足道的东西,因为这是我第一次使用MVC的验证框架。
我想补充的一点是,我使用 Ajax帖子调用Controller 这会导致这种异常吗?
答案 0 :(得分:1)
<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);
这意味着您可能从行动中返回了错误的观点。
答案 1 :(得分:0)
试试这个,
在您的操作中添加模型错误
methodName := "Method1"
c := &Client{id: "foo"}
m := &Method1{record: "bar"}
args := []reflect.Value{reflect.ValueOf(m)}
reflect.ValueOf(c).MethodByName(methodName).Call(args)
fmt.Printf("%s record is %s", methodName, m.record)
使用此功能在视图中显示
ModelState.AddModelError("keyName","Error Message");