A passagem de dados adicionais do viewmodel com EditorFor falha em relacionamentos um-para-muitos

StackOverflow https://stackoverflow.com/questions/3239082

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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top