【问题标题】:Passing additional data in a ViewBag to the EditorTemplate from the Partial将 ViewBag 中的其他数据从 Partial 传递给 EditorTemplate
【发布时间】:2012-03-01 09:04:41
【问题描述】:

我有一个局部的看法:

@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 包含“类”键。这是屏幕转储:

为什么会发生这种情况?我该怎么做才能将此值从部分模板传递到编辑器模板?

【问题讨论】:

    标签: vb.net asp.net-mvc-3 razor partial-views viewbag


    【解决方案1】:

    您可以将其作为匿名对象传递:

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

    在你的模板中:

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

    【讨论】:

    • 是的,这行得通。我做错了什么?是否可以像我一样访问数据?问题只是一个练习.. 感谢您的帮助!
    • @MichalB.,您传递给EditorFor 助手的additionalViewData 参数是Object 类型。当您传递一个匿名对象时,它的属性会自动作为键注入到模板的视图数据中。在您的情况下,您已经传递了 ViewDataDictionary 类型的对象,因此在模板中您可以使用例如 ViewBag.KeysViewBag.Values 访问其属性。
    猜你喜欢
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    相关资源
    最近更新 更多