我有一个视图,我将一个viewmodel对象传递给包含IQueryable对象的视图模型对象。MVC3通过Iquableable将viewmodel对象传递回控制器
此对象用于填充mvccontrib网格。该视图还包含允许用户过滤网格内数据的其他部分视图。
网格过滤后,我希望用户能够将Iqueryable对象导出到另一个控制器actionresult方法,然后调用另一个将数据导出到Excel的视图模型。
这里是调用导出的ActionResult()方法的视图的片段:
@using (Html.BeginForm("Export", "Home", FormMethod.Post, new { Model }))
{
<p>
<input class="button" value="Export to Excel" type="submit" />
</p>
}
模型确实包含的IQueryable对象。
当我调试代码时,我可以查看viewmodel对象,当然为了填充IQueryable我必须枚举该对象。
我还创建了另一个viewmodel对象,一旦Model对象传回给actionresult方法,就会尝试使用.ToList()方法或AsEnumerable()方法枚举IQueryable对象。
但在所有情况下,IQueryable对象都作为空对象传递给控制器。
这里是正在从视图称为动作结果方法:
[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Export(PagedViewModel<NPSProcessed> NPSData)
{
string message = "";
NPSData Query = new Models.NPSData(NPSData);
Query.IData = NPSData.Query.ToList();
// Opening the Excel template...
FileStream fs =
new FileStream(Server.MapPath(@"\Content\NPSProcessedTemplate.xls"), FileMode.Open, FileAccess.Read);
MemoryStream ms = new MemoryStream();
ee.ExportData(fs, ms, Query.IData, message);
// Sending the server processed data back to the user computer...
return File(ms.ToArray(), "application/vnd.ms-excel", "NPSProcessedNewFile.xls");
}
任何援助将不胜感激。
感谢
乔
好的答案,我已经尝试过新的{prop1 = Model.Query}。 Model.Query是IQueryable对象。我收到以下错误:无法创建接口的实例。 –
@Joe Pitz,不,只有简单的类型(字符串,整数,...)。不要尝试发送任何复杂的对象。它不会工作。 –
如果用户选择几百行,那么将这些数据传回模型的最佳方法是什么?传递用户选择的过滤器参数,然后使用Export模型中的这些参数重新创建数据表上的过滤器条件是最好的方法吗?谢谢 –