A passagem de dados adicionais do viewmodel com EditorFor falha em relacionamentos um-para-muitos
-
15-09-2020 - |
Pergunta
Eu tenho um modelo de editor (Views/Shared/EditorTemplates/HORDER.ascx) que herda
System.Web.Mvc.ViewUserControl<CCOK2.Models.HORDER>
Meu viewmodel tem um relacionamento um-para-muitos que eu uso Html.EditorFor para renderizar vários HORDERS
<%: Html.EditorFor(model => model.PEOPLE.HORDERS, new {fred="hello"})%>
Eventualmente, o que eu quero fazer é passar os dados para uma lista suspensa, porém, no momento, estou apenas tentando passar uma string "hello"
Se eu incorporar o seguinte em HORDER.ascx
<%: ViewData.Count() %>
Eu recebo a saída "0".Qualquer tentativa de obter os dados de visualização falha.
No entanto, se eu usar o EditorFor com um único item, ele funcionará conforme o esperado:Eu adicionei FirstHorder ao meu viewmodel, configurei como model.PEOPLE.HORDERS.First() então <%:Html.EditorFor(model => model.FirstOrder, new {fred="hello"})%> passa olá conforme esperado.
Então...existe alguma maneira de fazer com que o EditorFor trabalhe com dados adicionais ao chamá-lo com um relacionamento um-para-muitos?
EDITAR:Foi sugerido em outro lugar que eu use o EditorFor em um loop ForEach contra os HORDERS individuais.Isso funciona (ou seja,os viewdata adicionais são passados corretamente), mas acabo com todos os controles renderizados pelo EditorFor tendo o mesmo id e nome em vez de PEOPLE.HORDERS[n].field, o que não é desejável.
Solução
Depois de muita bagunça parece que não é possível fazer isso:Considero isso um bug no framework.A solução alternativa é inseri-lo no viewdata antes da chamada EditorFor.