2012-11-05 54 views
0

我需要小帮助才能通过对象类型有一个参数给控制器。我试图直接传递对象, 这里是例外HTML.ActinLink传递对象有参数

System.Web.Mvc.HtmlHelper<dynamic>有一个名为ActionLink没有适用的方法 但似乎有这个名字的扩展方法。
扩展方法不能动态分派。考虑将
动态参数或调用扩展方法,而不使用扩展方法语法

即使我添加了类型转换代码,但它仍然抛出编译错误如上

InProgressGrid.Column(header: "File Name", columnName: "FileName",format:(item) => Html.ActionLink(((string)item.FileName), "DownloadReport", (Domain.UserObject)item ,null)) 

有没有什么办法可以传递多个参数控制器的操作方法

InProgressGrid.Column(header: "File Name", columnName: "FileName",format:(item) => Html.ActionLink(((string)item.FileName), "DownloadReport", new {FileName = item.FileName,PK= item.PartitionKey },null)), 

现在,当我运行应用程序时,我只看到一个属性即。文件名被传递但没有PartitionKey传递给控制器​​的动作参数..

是否有上述条件在全球路由的任何改变工作

普莱斯帮助我,这是非常紧迫的

回答

0

您需要添加一条路线:

routes.MapRoute(
    "ReportDownload",  // Route name 
    "Reports/{PK}/{FileName}",       // URL with parameters 
    new { controller = "Reports", action = "DownloadReport", PK = "", FileName="" } // Parameter defaults 
); 

只需将控制器名称替换为您的名字即可。