Как получить доступ к объекту с анонимным типом, переданному в частичное представление?

2

Я пытаюсь передать некоторые параметры (пару строк) со страницы на частичное представление, которое должно отображаться на главной странице. Для этого я передаю анонимно типизированный объект, который продолжает давать мне RuntimeBinderException. Учитывая то, что я пробовал, я не удивлен, получив ошибку, но я не знаю, что еще попробовать.

Views\Home\PageWithPartialView.cshtml

@Html.Partial("DynamicPartialView", new { paramFromPageToPartialView = "value" })

Views\Shared\DynamicPartialView.cshtml

@model dynamic // Doesn't make a difference

@{
    // This is where I need to access and display the parameters 
    // passed from the main page

    // Throws RuntimeBinderException
    // Cannot apply indexing with [] to an expression of type 'object'
    var try1 = Model["paramFromPageToPartialView"];

    // Throws RuntimeBinderException
    // 'object' does not contain a definition for 'paramFromPageToPartialView'
    var try2 = Model.paramFromPageToPartialView;
}

Если частичные представления не могут сделать это, я открыт. Частичный вид имеет пару сотен строк кода для создания, поэтому пользовательские HtmlHelpers не кажутся мне управляемыми.

  • 1
    Являются ли два бита кода в одной сборке интересными?
  • 0
    Я так думаю ... Первый находится в Views \ Home \, а другой - в Views \ Shared \. Исключение происходит в частичном представлении.
Показать ещё 1 комментарий
Теги:
asp.net-mvc-3

1 ответ

3
Лучший ответ

ViewBag предназначен для решения этой проблемы. Вместо того, чтобы потреблять paramFromPageToPartialView в частичном из Модели, потребляйте его из ViewBag:

Views\Home\PageWithPartialView.cshtml

@{ViewBag.paramFromPageToPartialView = "value";}
@Html.Partial("DynamicPartialView")

Views\Shared\DynamicPartialView.cshtml

@model dynamic // Doesn't make a difference

@{
    var try3 = ViewBag.paramFromPageToPartialView;
}
  • 0
    Бинго! Я был почти уверен, что что-то упустил ... Спасибо!
  • 0
    Это очень помогло в моей нынешней ситуации, когда я неоднократно отрисовываю частичное представление с немного разными типами и не могу реорганизовать базовые классы. В конечном счете, я задумался , но использовал бы это, если бы остальная часть команды хорошо знала .NET MVC.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню