【问题标题】:ModelStateValidation模型状态验证
【发布时间】:2012-05-03 19:49:54
【问题描述】:

我有这个模型:

        public Flight[] Flights { get; set; }
        public Passenger Passenger { get; set; }
        public ReservationData ReservationData { get; set; }

我想像这样添加 ModelState 错误:

        Operation.ModelState.AddModelError("Flights", "");

但我想将错误分别添加到航班数组的项目中。那我用什么键呢?

【问题讨论】:

  • 出于好奇,您为什么要专门将错误添加到 Flight 对象?是因为您使用的是局部视图吗?
  • 因为每个航班在页面上都有自己的数据

标签: asp.net-mvc-3 model-view-controller validation


【解决方案1】:

对我来说似乎更像是一种解决方法,但您仍然可以在控制器和视图中直接使用ModelState,并制作某种特定于航班的键,例如某些航班的标识符。

这是使用数组中航班索引作为标识符的示例。控制器:

...
for (int i=0; i < model.Flights.Length; i++)
{

    //here comes the validation for flight model.Flights[i]
    //if the validation fails, adding error to the model

    Operation.ModelState.AddModelError("Flight" + i, "");
}
...

查看:

<% for (int i=0; i < Model.Flights.Length; i++) { %>

    <%-- flight rendering goes here, including rendering of errors --%>

    <% if (ViewData.ContainsKey("Flight" + i) { %>
        <%: ViewData.ModelState["Flight" + i].Errors[0] %>
    <% } %>
<% } %>

【讨论】:

  • 如果我想使用@Html.ValidationMessageFor怎么办?
  • 不确定,但我相信它不会起作用。 ValidationMessageFor 为您提供与特定模型属性相关的错误消息,并且不支持通过键检索错误消息。不过我是这样理解的,可能理解错了,你试试看吧!
  • 但是还有一个选项 - 添加到 ModelState 的所有错误都将出现在 @Html.ValidationSummary 中。
猜你喜欢
  • 2020-05-17
  • 1970-01-01
  • 1970-01-01
  • 2023-04-07
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
相关资源
最近更新 更多