1

これが私のコードです:

        [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 ファイルとして送信することです。これは強く型付けされたビューです。

私の質問は、このビューにモデルを提供するにはどうすればよいですか?

4

1 に答える 1

6

渡す 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");
    }
于 2013-02-22T16:08:01.707 に答える