C# 如何提供要查看的模型?
这是我的密码:C# 如何提供要查看的模型?,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,这是我的密码: [HttpGet] public FileContentResult GetCalenderView() { StringWriter sw = new StringWriter(); ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, "GetCalende
[HttpGet]
public FileContentResult GetCalenderView()
{
StringWriter sw = new StringWriter();
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, "GetCalenderView");
ViewContext viewContext = new ViewContext(this.ControllerContext, viewResult.View, this.ViewData, this.TempData, sw);
viewResult.View.Render(viewContext, sw);
var stringResult = sw.GetStringBuilder().ToString();
byte[] byteArray = Encoding.ASCII.GetBytes(stringResult);
return File(byteArray, "application/octet-stream", "Month.xls");
}
我在网上找到的。
它的作用是,以字符串格式向我提供视图,并将其作为excel文件发送。
这是一个强类型视图
我的问题是,如何为该视图提供模型?设置要传递的ViewData的
模型属性
[HttpGet]
public FileContentResult GetCalenderView()
{
var viewData = ViewData; // Ideally copy this or make a fake of it
viewData.Model = new object(); // Make this the model you want to pass in
StringWriter sw = new StringWriter();
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, "GetCalenderView");
// Note that we're passing in viewData instead of ViewData
ViewContext viewContext = new ViewContext(this.ControllerContext, viewResult.View, viewData, this.TempData, sw);
viewResult.View.Render(viewContext, sw);
var stringResult = sw.GetStringBuilder().ToString();
byte[] byteArray = Encoding.ASCII.GetBytes(stringResult);
return File(byteArray, "application/octet-stream", "Month.xls");
}
设置要传入的ViewData的Model
属性
[HttpGet]
public FileContentResult GetCalenderView()
{
var viewData = ViewData; // Ideally copy this or make a fake of it
viewData.Model = new object(); // Make this the model you want to pass in
StringWriter sw = new StringWriter();
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, "GetCalenderView");
// Note that we're passing in viewData instead of ViewData
ViewContext viewContext = new ViewContext(this.ControllerContext, viewResult.View, viewData, this.TempData, sw);
viewResult.View.Render(viewContext, sw);
var stringResult = sw.GetStringBuilder().ToString();
byte[] byteArray = Encoding.ASCII.GetBytes(stringResult);
return File(byteArray, "application/octet-stream", "Month.xls");
}
返回的是视图而不是文件?不。。我想返回一个文件,但视图需要模型数据。如何提供要查看的模型数据?不能从同一操作方法返回视图和文件。所以我们需要知道您想要返回给用户的实际数据是什么——文件还是HTML内容?如果两者都是,那么我们可以更好地提出一个解决方案,例如可能需要JavaScript。。看来你做错了什么。您能添加查看代码吗?很可能有比使用中间视图更直接的方法来创建Excel文件。返回的是视图而不是文件?Nooooooo。。我想返回一个文件,但视图需要模型数据。如何提供要查看的模型数据?不能从同一操作方法返回视图和文件。所以我们需要知道您想要返回给用户的实际数据是什么——文件还是HTML内容?如果两者都是,那么我们可以更好地提出一个解决方案,例如可能需要JavaScript。。看来你做错了什么。您能添加查看代码吗?很可能有比使用中间视图更直接的方法来创建Excel文件。有趣的方法。我会把它放在我的公用事业带上,以备将来使用。很有趣的方法。我会把它放在我的实用腰带里,以备将来使用。