Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何提供要查看的模型?_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

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文件。有趣的方法。我会把它放在我的公用事业带上,以备将来使用。很有趣的方法。我会把它放在我的实用腰带里,以备将来使用。