Следующий код был исчерпан, но в основном я хотел бы получить следующее:Как создать индексы инкрементной префиксной коллекции с помощью шаблонов HTML MVC?
Я хотел бы иметь возможность редактировать вопросы и их содержащие ответы на выбор, будучи в состоянии динамически добавлять/remove Вопросы/ответы на странице. В идеале, HtmlFieldPrefix для моих элементов будет не последовательным, но Html.EditorFor() использует последовательный индекс.
У меня есть вопрос ViewModel, который содержит IEnumerable из вариантов ответов:
public class QuestionViewModel
{
public int QuestionId { get; set; }
public IEnumerable<AnswerChoiceViewModel> AnswerChoices { get; set; }
}
в моем вопросе частичный вид (Question.ascx), у меня есть это:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.QuestionViewModel>" %>
<%=Html.HiddenFor(m => m.QuestionId)%>
<%=Html.EditorFor(m => m.AnswerChoices) %>
и ответ Выбор шаблон редактора (AnswerChoiceViewModel.ascx):
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.AnswerChoiceViewModel>" %>
<%=Html.HiddenFor(m => m.AnswerChoiceId)%>
<%=Html.TextBoxFor(m => m.Name)%>
Когда я выдаю Question.ascx , То выход будет выглядеть следующим образом:
<input type="hidden" id="QuestionId" value="1" />
<input type="hidden" id="Question.AnswerChoices[0].AnswerChoiceId" value="1" />
<input type="hidden" id="Question.AnswerChoices[0].Name" value="Answer Choice 1" />
<input type="hidden" id="QuestionId" value="2" />
<input type="hidden" id="Question.AnswerChoices[1].AnswerChoiceId" value="2" />
<input type="hidden" id="Question.AnswerChoices[1].Name" value="Answer Choice 2" />
То, что я хочу знать, как я могу обеспечить EditorFor пользовательский индекс GUID так, что страница будет оказывать так:
<input type="hidden" id="QuestionId" value="1" />
<input type="hidden" id="Question.AnswerChoices[e1424d5e-5585-413c-a1b0-595f39747876].AnswerChoiceId" value="1" />
<input type="hidden" id="Question.AnswerChoices[e1424d5e-5585-413c-a1b0-595f39747876].Name" value="Answer Choice 1" />
<input type="hidden" id="QuestionId" value="2" />
<input type="hidden" id="Question.AnswerChoices[633db1c3-f1e6-470b-9c7f-c138f2d9fa71].AnswerChoiceId" value="2" />
<input type="hidden" id="Question.AnswerChoices[633db1c3-f1e6-470b-9c7f-c138f2d9fa71].Name" value="Answer Choice 2" />
Я уже писал вспомогательный метод, который получит префиксный индекс текущего контекста и сохранит его в скрытом поле «.Index», чтобы некорректные индексы могли быть связаны правильно. Просто хочу знать, как EditorFor назначает индексы, чтобы я мог переопределить его (или любое другое рабочее решение).