Я не уверен, что вы можете создать ViewDataDictionary с анонимным объектом. Попробуйте перегрузить, взяв другой ViewDataDictionary. Это должно заставить ваши ViewData ["foo"] отображать "Bar".
Html.RenderPartial("MenuTabsPartial", Model, new ViewDataDictionary(new ViewDataDictionary { { "Foo", "bar" } }));
Я делал это один или два раза, но я бы сказал, что вы действительно должны рассмотреть возможность передачи этого в Модель. Если ваша модель уже не является моделью view , то я бы порекомендовал сделать одну с двумя свойствами: одну, которая представляет собой «Model» в настоящее время, и другую для «Foo». Контроллер установит это и передаст его в представление.
class MyViewModel
{
public TypeOfMainModel MainModel {get; set;} //put your current model here
public string Foo {get; set;}
}
Пусть ваш вид использует это как модель вида. Затем, когда вы визуализируете свою часть, вы можете просто передать всю модель или, возможно, просто дать ей Foo (если вашему частичному виду нужна только строка):
Html.RenderPartial("MenuTabsPartial", Model.Foo);
Выбор за вами, но мой предпочтительный подход - создание контейнера модели представления, в котором содержится все необходимое для представления и любого частичного представления.