【问题标题】:RenderPartial and ViewBagRenderPartial 和 ViewBag
【发布时间】:2013-06-25 15:06:02
【问题描述】:

我正在尝试修改此代码: http://www.codeproject.com/Articles/260470/PDF-reporting-using-ASP-NET-MVC3 使其获取 ViewBag 数据以在 PDF 中呈现视图。

基本上,我需要将 ViewBag 的新 Context 传递给 Html.RenderPartial,现在的代码是:

Html.RenderPartial(viewName, model);

我正在尝试将其更改为:

Html.RenderPartial(viewName, model, new ViewDataDictionary(ViewBag));

我没有收到任何错误,但字典一直为空。

BR

【问题讨论】:

    标签: asp.net-mvc html-helper viewbag


    【解决方案1】:

    尝试传入ViewData 属性而不是ViewBag

    Html.RenderPartial(viewName, model, new ViewDataDictionary(ViewData));
    

    ViewBag 属性是一个动态对象,因此您调用的ViewDataDictionary 构造函数是采用object 的构造函数。您最好使用带有已填充ViewDataDictionary 的那个。 ViewBag 和 ViewData 中的数据是一样的。

    【讨论】:

    • 我可以让它工作,但我也发现我使用了一个名为“ViewBag”的变量我认为这不是一个好主意,所以我改了一个更好的名字,我做了这个改变现在效果很好!谢谢!
    • +1.谢谢!伟大的。我知道 ViewData,但从未使用过它。有一段时间卡在这个问题上,大部分时间都用来创建一个新的 viewModel 来解决这个问题。
    【解决方案2】:

    你可以使用:

    @Html.Partial(viewName)
    

    在主视图的部分视图包中将可以访问。

    好的。如果您需要将 html 从部分视图渲染为 pdf,您可以使用以下代码:

    @{
        var htmlString = Html.Partial(viewName);    
        var pdfData = PdfComposerClass.CreatePdfStaticMethod(htmlString);   
    }
    

    【讨论】:

    • 谢谢,但这不是我需要的,这是一种特殊情况,在某些情况下,我需要将视图呈现为 PDF,执行此操作的 api 有效,但没有获取 ViewBag 数据,我本地化它创建一个新的上下文,问题似乎在我上面写的那一行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多