Exporte os resultados da pesquisa para o Excel no MVC 4
Eu tenho o seguinte controlador. Quando procuro uma série específica, recebo uma lista. O que eu quero é exportar esse resultado para o Excel. Meu botão de exportação funciona bem. Mas a única coisa é que ele tenta exportar tudo em db para o excel quando clico nele. O que eu quero é exportar apenas os resultados. Qualquer ideia?
public ActionResult Index(string searchBy, string search)
{
if (!String.IsNullOrEmpty(searchBy) && !String.IsNullOrEmpty(search))
{
if (searchBy == "ID")
{
return View(db.students.Where(x => x.id==search).ToList());
}
else if (searchBy == "grade")
{
return View(db.students.Where(x => x.grade == search).ToList());
}
else
{
return View(db.students.Take(0));
}
}
public ActionResult ExportData()
{
GridView gv = new GridView();
gv.DataSource = db.students.ToList();
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=students.xls");
Response.ContentType = "application/ms-excel";
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction("Home");
}
E esta é a parte da minha exibição de índice:
@using (Html.BeginForm("ExportData", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<table>
<tr>
<td></td>
<td>
<input type="submit" name="Export" id="Export" value="Export" />
</td>
</tr>
</table>
}