无法找到IViewDataContainer对象.ViewUserControl必须在ViewPage, ViewMas

本文关键字:ViewPage ViewMas ViewUserControl IViewDataContainer 对象 | 更新日期: 2023-09-27 17:54:01

我试图在MVC中实现SSRS查看器。经过大量的痛苦和折磨,我已经通过一个自定义控件基本工作。

报告呈现得很好,但我试图像这样将模型传递给控件:

@Html.Partial("VendorReport", Model)

调用ascx控件:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VendorReport.ascx.cs" Inherits="ExtendedServicesReportingPortal.Views.Reports.VendorReport" %>
<uc1:RazorReportViewer ID="VendorReportViewer" runat="server" ...Omitted Custom Properties...  />

但我得到这个错误,如果我尝试访问模型:

The ViewUserControl '~/Views/Reports/RazorReportViewer.ascx' cannot find an IViewDataContainer object. The ViewUserControl must be inside a ViewPage, a ViewMasterPage

这里是相关的控制器控制器方法:

public ActionResult TransactionCountsAndInvoiceAmounts(TransactionCountsAndInvoiceAmountsModel model)
    {
        if(model == null) model = new TransactionCountsAndInvoiceAmountsModel();
        return View(model);
    }

非常新的MVC,我错过了什么?

无法找到IViewDataContainer对象.ViewUserControl必须在ViewPage, ViewMas

我认为这里的问题是,你正在使用一个用户控件的ViewPage.Model属性将是空的,因为控件没有访问/使用ViewData。您可能需要将模型传递给用户控件。

这里和这里都有一些例子,展示了在MVC视图中重用Web Form用户控件,包括传入模型。