ASP.NET MVC 2Editor для не генерации правильных атрибутов имени - PullRequest
0 голосов
/ 29 июня 2010

У меня есть следующий редактор для шаблона:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<ContactDto>>" %>
<%@ Import Namespace="c2.bases.dto.structure"%>
<%
    for (var i = 0; i < ViewData.Model.Count; i++)
    {%>
         <%=Html.EditorFor(x => x[i])%>
    <%}
%>

Проблема в том, что он не генерирует правильный атрибут имени, он генерирует следующий атрибут имени для одного из элементов:

name="TrainingLookUpContainer.Contacts.[0].Surname"

Вы можете видеть, что есть дополнительное '.' символ после последних контактов и перед индексатором [0].

должно быть

name="TrainingLookUpContainer.Contacts[0].Surname"

Объект не становится связанным из-за этого дополнительного '.'.

Этот редактор вызывается с другой страницы, например:

<div style="background: #fff;height:100%">
    <%= Html.EditorFor(x => x.TrainingLookUpContainer.Contacts, "TrainingCategory")%>
</div>

Я обнаружил, что эта статья говорит о том, что я все делаю правильно текст ссылки .

Я думал, что это может быть лямда, но я думаю, что это может быть ошибка из-за вложенности.

У меня есть обходной путь, где я передаю в Содержащий объект TrainingLookUpContainer, и все хорошо.

Кто-нибудь может предложить лучший способ привязки к списку?

Ответы [ 3 ]

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

Вам вообще не нужен этот шаблон.

MVC 2 уже включает шаблон для коллекций, который делает именно то, что вы хотите, и создает собственные имена. Вы можете увидеть код этого шаблона, загрузив пакет MVC 2 Futures и найдя файл EditorTemplates / Collection.ascx. Имена должны быть исправлены правильно, и этот код показывает вам, как это сделать (если по какой-то причине вы не можете использовать встроенный шаблон Collection).

0 голосов
/ 01 июля 2010

Что вы имеете в виду, он не должен использовать EditorFor x [i].Он должен использовать любое решение, которое логично.У меня, например, похожая ситуация, но мне нужно предоставить настраиваемый редактор добавления / удаления для моей коллекции (массив, список), и эта проблема полностью блокирует меня.Я был вынужден передать всю модель редактору, чтобы иметь возможность использовать это свойство коллекции.Эта вещь редактора - это ошибка, ошибка, которая скоро должна иметь быстрое исправление, быстрое исправление, которое можно прозрачно применить к рабочим серверам без необходимости что-либо делать администратору.

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

Вместо:

for (var i = 0; i < ViewData.Model.Count; i++)
{%>
     <%=Html.EditorFor(x => x[i])%>
<%}

просто напишите:

<%= Html.EditorForModel() %>

, что сгенерирует правильные атрибуты имени и сделает ваш код короче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...