我有一个强类型视图,它使用ASP.NET MVC3显示模型。我想添加一个链接,以便用户可以将视图中显示的模型下载到CSV文件中。我认为链接会指向控制器上的另一个操作,该操作将模型作为参数。
最佳做法是什么?
感谢您的投入!
答案 0 :(得分:0)
您应该创建一个为CSV文件返回自定义ViewResult
的操作方法。该方法可以接受用于返回显示操作方法的模型的相同参数并使用它检索模型(例如,从存储库中)并返回文件结果。
要实现该功能,您必须创建一个源自CsvFileResult
的自定义System.Web.Mvc.FileResult
类(它本身派生自System.Web.Mvc.ActionResult
)。该类的构造函数应该使用您的模型,创建逗号分隔的输出并返回MIME类型 text / csv 的文件结果。
例如,您的Controller可能如下所示:
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);
}
}
在客户端上,您可以使用ExportCsvFile
帮助程序方法和重载接受参数值输出ActionLink
操作方法的链接:
@Html.Helper("ExportCsvFile", "Model", new { id = Model.ModelID })
答案 1 :(得分:0)
您可以将模型存储为客户端上的json,然后回发并从那里转换为csv。