您應該創建一個操作方法,爲CSV文件返回自定義ViewResult
。該方法可以接受用於返回顯示操作方法的模型的相同參數,並使用它來檢索模型(例如從存儲庫),並返回文件結果。
要實現該功能,您必須創建一個從System.Web.Mvc.FileResult
(本身來自System.Web.Mvc.ActionResult
)派生的自定義CsvFileResult
類。該類的構造函數應該使用您的模型,創建逗號分隔的輸出並返回MIME類型爲text/csv的文件結果。
舉個例子,你的控制器看起來是這樣的:
public class ModelController : Controller
{
private readonly IModelRepository _modelRepository;
public DemoController(IModelRepository modelRepository)
{
_modelRepository = modelRepository;
}
public ActionResult Display(int id)
{
var model = _modelRepository.Retrieve(id);
return View(model);
}
public FileResult ExportCsvFile(int id)
{
var model = _modelRepository.Retrieve(id);
return new CsvFileResult(model);
}
}
在客戶端,您可以輸出使用ActionLink
helper方法和重載接受參數值的ExportCsvFile
操作方法的鏈接:
@Html.Helper("ExportCsvFile", "Model", new { id = Model.ModelID })