2012-03-01 1 views
1

У меня есть частичный вид:Передача дополнительных данных в ViewBag к EditorTemplate с частичным

@ModelType ProjectCreateViewModel 
@Code 
    Dim vdd = New ViewDataDictionary() 
    vdd.Add("Classes", "template") 
End Code 
@Html.EditorFor(Function(m) m.Project.InvoiceScheduleBasedOnDates, vdd)) 

В этом частичном виде я создаю новый ViewDataDictionary передать дополнительные данные моего редактору. В редакторе я обращаюсь к ViewBag.Classes и его значение равно null. Однако, когда я отлаживаю, я вижу, что ViewBag содержит ключ «Классы». Здесь свалка экран:

You can see that var1 is null, but ViewBag contains "Classes"

Почему это происходит со мной и что я могу сделать, чтобы передать это значение из частично в шаблон редактора?

ответ

3

Вы могли бы передать его как анонимный объект:

@ModelType ProjectCreateViewModel 
@Html.EditorFor(Function(m) m.Project.InvoiceScheduleBasedOnDates, New With { .Classes = "template" }) 

и в шаблоне:

@Modelype InvoiceDate 
@Code 
    Dim var1 = ViewBag.Classes 
    ... 
End Code 
+1

Да, это работает. Что я делал неправильно? Можно ли получить доступ к данным так, как я сделал? Вопрос как упражнение .. Спасибо за вашу помощь! –

+1

@MichalB., Параметр 'дополнительныйViewData', который вы передаете в помощник' EditorFor', имеет тип 'Object'. Когда вы передаете анонимный объект, его свойства автоматически вводятся в данные представления шаблона в виде ключей. В вашем случае вы передали объект типа 'ViewDataDictionary', поэтому внутри вашего шаблона вы можете получить доступ к его свойствам, используя, например,' ViewBag.Keys' и 'ViewBag.Values'. –

Смежные вопросы