2012-03-01 48 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

是的,这工作。我做错了什么?是否可以像我那样访问数据?问题只是一个练习..感谢您的帮助! – 2012-03-01 09:24:04

+1

@MichalB。,您传递给EditorFor'助手的'additionalViewData'参数的类型为'Object'。当你传递一个匿名对象时,它的属性被自动注入模板的视图数据中作为关键字。在你的情况下,你已经传递了一个'ViewDataDictionary'类型的对象,所以你可以使用'ViewBag.Keys'和'ViewBag.Values'来访问它的属性。 – 2012-03-01 09:36:55