控制器返回文件头以查看不是文件

时间:2011-03-01 17:04:06

标签: c# asp.net-mvc asp.net-ajax

我的表单看起来像这样

{
 using (Ajax.BeginForm("Log",
                        new AjaxOptions { 
                            UpdateTargetId = "lessonTable"
                        }))

  //removed dropdown list ect... for readability

 input type="submit" name = "submitButton" value = "Filter"          
 input type="submit" name = "submitButton" value = "Print Report"

我的控制器执行此操作

[HttpPost]
    public ActionResult Log(lesson lesson,string submitButton)
    {
        /*Retreive all lessons*/
        List<lesson> lessonList = (from l in storeDB.lessons
                                   where l.statusID != DELETED 
                                   select l).ToList();

        /*Filter retreived Lesson*/
        lessonList = filterLesson(lesson,lessonList);

        switch (submitButton)
        {

            case "Filter":
                return PartialView(lessonList);

            default:
                {
                    return DetailsReport();
                }
        }


    }

DetailsReport()方法返回一个文件

 return File(renderedBytes, mimeType);

单击“打印报告”按钮时,它正在使用文件头更新div,而不是请求用户打开文件。我尝试删除updatetarget ID但它没有提示文件下载。此外,当我对ajax.actionlink调用详细信息报告方法时,它正常工作。

由于

1 个答案:

答案 0 :(得分:0)

如果我理解你在做什么,它就按照预期工作;因为您是从Ajax.BeginForm()发出请求,所以它会尝试显示页面中返回的内容。删除目标不会改变它。

您应该简单地将“打印报告”按钮作为单独表单的一部分或根本不是表单,并在提交之前从现有表单中提取所需信息(因为它不会自动执行一次它从该表格中删除)