我有一個視圖,我將一個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模型中的這些參數重新創建數據表上的過濾器條件是最好的方法嗎?謝謝 –