Passando parâmetros adicionais para uma Partial View tipada (e de quebra ainda manter o ModelState)

Código mais assertivo para passar um Model e dados extras para uma Partial View, podendo manter também a ViewData que vem da Controller.

Há quanto tempo!

Gostaria de compartilhar com vocês um pequeno artigo que encontrei no site Code Evil. Eu precisava apenas passar para uma Partial View, além do Model, alguns dados adicionais. A princípio, precisava apenas do código abaixo:
 
@{
    Html.RenderPartial("_CreateEditDisplay", Model, 
        new ViewDataDictionary { 
            { "Submit", true }, { "Action", "Edit" }, { "ReadOnly", false } 
        }
    );
}

Esta é a forma mais comum de se fazer isso e funciona, mas o artigo foi além. Ao invés de criar um  ViewDataDictionary para os parâmetros, ele manteve o ViewData que vem da Controller, acrescentando os parâmetros adicionais nesta ViewData e, então, passando-a para a Partial View. Desta forma, a Partial recebe também o Model State da Controller. Nele, por exemplo, estão o ValidationSummary e o ValidationMessageFor, necessários para exibir erros de validação de formulário.
 
@{
    Html.ViewData.Add(new KeyValuePair<string, object>("Submit", true));
    Html.ViewData.Add(new KeyValuePair<string, object>("Action", "Edit"));
    Html.ViewData.Add(new KeyValuePair<string, object>("ReadOnly", false));
 
    Html.RenderPartial("_CreateEditDisplay", Model, Html.ViewData);
}

O artigo original está em https://www.codenoevil.com/pass-additional-viewdata-asp-net-mvc-4/ . Gratos!

0 comentários

Envie seu comentário