我的表单看起来像这样
{
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调用详细信息报告方法时,它正常工作。
由于
答案 0 :(得分:0)
如果我理解你在做什么,它就按照预期工作;因为您是从Ajax.BeginForm()
发出请求,所以它会尝试显示页面中返回的内容。删除目标不会改变它。
您应该简单地将“打印报告”按钮作为单独表单的一部分或根本不是表单,并在提交之前从现有表单中提取所需信息(因为它不会自动执行一次它从该表格中删除)