¿Cómo producir índices de colección de prefijos no secuenciales con plantillas de MVC HTML Editor?

El siguiente código se ha simplificado mucho, pero básicamente lo que estoy buscando lograr es el siguiente:

Me gustaría poder editar las Preguntas y sus Opciones de Respuesta que contienen, mientras que puedo agregar / eliminar dinámicamente las Opciones de Respuesta / Preguntas de la página. Idealmente, el HtmlFieldPrefix para mis artículos no sería secuencial, pero Html.EditorFor () usa un índice secuencial.

Tengo un Question ViewModel que contiene un IEnumerable de Opciones de respuesta:

public class QuestionViewModel
{
    public int QuestionId { get; set; }
    public IEnumerable<AnswerChoiceViewModel> AnswerChoices { get; set; }
}

En la vista parcial de mi pregunta (Question.ascx), tengo esto:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.QuestionViewModel>" %>

<%=Html.HiddenFor(m => m.QuestionId)%>
<%=Html.EditorFor(m => m.AnswerChoices) %>

Y la plantilla del editor Answer Choice (AnswerChoiceViewModel.ascx):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Models.AnswerChoiceViewModel>" %>

<%=Html.HiddenFor(m => m.AnswerChoiceId)%>
<%=Html.TextBoxFor(m => m.Name)%>

Cuando renderizo Question.ascx, la salida se verá de la siguiente manera:

<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" />

Lo que quiero saber es cómo puedo proporcionar Editor para un índice GUID personalizado para que la página se muestre así:

<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" />

Ya he escrito un método auxiliar que obtendrá el índice de prefijo del contexto actual y lo almacenará en un campo oculto ".Index" para que los índices no secuenciales se puedan enlazar correctamente. Solo quiero saber cómo EditorFor está asignando los índices para que pueda anularlo (o cualquier otra solución que funcione).

Respuestas a la pregunta(5)

Su respuesta a la pregunta