ASP.NET MVC 2 Проверка строго типизированного списка моделей с исключением аннотаций данных при использовании EnableClientValidation () - PullRequest
2 голосов
/ 24 июня 2010

Вот класс друзей, используемый для добавления валидаторов аннотаций данных в модель Entity Framework:

[MetadataType(typeof(Result_Validation))]
public partial class Result
{

}

[Bind(Include = "Title,Description")]
public class Result_Validation
{
    [Required(ErrorMessage = "Title is required")]
    public string Title { get; set; }

    [Required(ErrorMessage = "Description is required")]
    public string Description { get; set; }
}

Вот мое мнение:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IList<Result>>" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>Test</title>
</head>
<body>
  <% Html.EnableClientValidation(); %>
  <% using (Html.BeginForm()) {%>
  <%: Html.ValidationSummary(true) %>
  <fieldset>
    <% for (int i = 0; i < 4; i++) { %>
      <div class="editor-label">
        <%: Html.LabelFor(model => model[i].Title)%>
      </div>
      <div class="editor-field">
        <%: Html.TextBoxFor(model => model[i].Title)%>
        <%: Html.ValidationMessageFor(model => model[i].Title)%>
      </div>
      <div class="editor-label">
        <%: Html.LabelFor(model => model[i].Description)%>
      </div>
      <div class="editor-field">
        <%: Html.TextBoxFor(model => model[i].Description)%>
        <%: Html.ValidationMessageFor(model => model[i].Description)%>
      </div>
    <% } %>
    <p>
      <input type="submit" value="Create" />
    </p>
  </fieldset>
  <% } %>
</body>
</html>

Это прекрасно работает для проверки на стороне сервера, но как только я опускаю Html.EnableClientValidation ();там я получаю эту ошибку: «Указанный ключ отсутствует в словаре».

.. и он указывает на эту строку в представлении:

<%: Html.ValidationMessageFor(model => model[i].Title)%>

1 Ответ

0 голосов
/ 24 июня 2010

попробуйте поставить

<% Html.ValidationSummary(); %>

до

<% Html.EnableClientValidation(); %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...