我正在尝试在各种Intranet报告页面上创建一个export-to-excel按钮,该按钮接收一般的viewmodel。我想从我的应用程序中的任何视图访问此方法,但是现在我正在从单个控制器尝试它。 (注意:必须从视图传递视图模型,因为用户已过滤视图模型)
我的控制器中的方法如下:
public void ExportToExcel<T>(T model, string fileName)
{
GridView gv = new GridView();
var lst = (IEnumerable<T>)model;
gv.DataSource = lst.ToList();
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
Response.Clear();
}
我正在使用:
<a href="@Url.Action("ExportToExcel", new { model = (IEnumerable< Reporting.Models.HelplineSalesViewModel >) Model, fileName = "HelplineSales" })">Export to Excel</a>
点击后我收到错误:
“无法在控制器'Reporting.Controllers.PostersController'上调用操作方法'Void ExportToExcel [T](T,System.String)',因为操作方法是一种通用方法。 参数名称:methodInfo“
答案 0 :(得分:0)
“您的错误表示您的控制器中没有通用的Action方法。您需要做的是为要导出到Excel的每种类型的对象设置单独的类型化操作方法。然后调用此方法他们每个人的通用方法。“ - krillgar