Shorthand para criar um ViewDataDictionary com um modelo e itens ViewData?

Existe alguma maneira de criar umViewDataDictionary com um modelo e propriedades adicionais com uma única linha de código. Estou tentando fazer umRenderPartial chame para uma visualização fortemente digitada ao montar o modelo e algumas propriedades de configuração de exibição extras sem montar explicitamente o ViewDataDictionary em várias linhas. Parece que seria possível, dado oRenderPartial sobrecarga tomando um modeloobject eViewDataDictionary mas parece que simplesmente ignora oViewDataDictionary sempre que ambos estiverem preenchido

// FAIL: This will result in ViewData being a ViewDataDictionary
// where Model = MyModelObject and there are no other parameters available.
this.Html.RenderPartial("SomePartialView", MyModelObject, new ViewDataDictionary(new { SomeDisplayParameter = true }));

Encontrei outra pessoa com omesmo problem, mas a solução é o mesmo conceito de várias linhas que encontrei: crie umViewDataDictionary com o modelo, adicione o (s) novo (s) parâmetro (s) e use-o noRenderPartial ligar

var SomeViewData = new ViewDataDictionary(MyModelObject);
SomeViewData.Add("SomeDisplayParameter", true);
this.Html.RenderPartial("SomePartialView", SomeViewData);

Sempre posso agrupar essa lógica em umChainedAdd método que retorna um dicionário duplicado com o novo elemento adicionado, mas parece que estou perdendo uma maneira de criar umViewDataDictionary que faria isso por mim (e isso é um pouco mais caro do que eu esperava

this.Html.RenderPartial("SomePartialView", new ViewDataDictionary(MyModelObject).ChainedAdd("SomeDisplayParameter", true));

public static ViewDataDictionaryExtensions {
    public static ViewDataDictionary ChainedAdd(this ViewDataDictionary source, string key, object value) {
        return source.ChainedAdd(new KeyValuePair<string,object>(key, value));
    }
    public static ViewDataDictionary ChainedAdd(this ViewDataDictionary source, KeyValuePair<string, object> keyAndValue) {
        ViewDataDictionary NewDictionary = new ViewDataDictionary(source);
        NewDictionary.Add(keyAndValue);
        return NewDictionary;
    }
}

Como bem, tentando montar umViewDataDictionary com um @ explíciModel eModelState simplesmente causa um erro de compilação porque o ModelState é somente leitur

// FAIL: Compilation error
this.Html.RenderPartial("SomePartialView", new ViewDataDictionary { Model = MyModelObject, ModelState = new ViewDataDictionary( new { SomeDisplayParameter = true }});

ANSWER (S): Parece que Craig e acabamos encontrando duas sintaxes separadas que farão o trabalho. Definitivamente, sou tendencioso nesse caso, mas gosto da ideia de definir o modelo primeiro e "decorá-lo" depoi

new ViewDataDictionary(MyModelObject) { { "SomeDisplayParameter", true }, { "SomeOtherParameter", 3 }, { "SomeThirdParameter", "red" } };

new ViewDataDictionary(new ViewDataDictionary() { {"SomeDisplayParameter", true }})
    { Model = MyModelObject };

Claro, eu ainda estaria girando minhas rodas sem a resposta dele (eventualmente), então o círculo fica perfeit

questionAnswers(5)

yourAnswerToTheQuestion