我正在创建一个网页,允许我使用搜索栏过滤数据库中的信息,并可以选择将搜索结果导出(下载)为excel文件,我已经有一种方法可以让我以excel格式下载,但是它不处理搜索结果,而是将所有信息存储在表内。
该方法接收一个参数,该参数指示从何处获取信息,在那里我只有数据库的模型名称点到表名称。 (例如:data.River)。
我认为解决方案是将执行器查询结果传递给该方法,但我不知道该怎么做
我尝试将要下载的方法放在ActionResult方法中,以查看是否可以传递用于检索视图中信息的相同查询,还尝试将查询存储在字符串中,但是没有一个似乎有效,或者至少不以我做事的方式
基于特定准则的从河流表和搜索栏中显示所有行的河流方法
//URL: Home/River
public ActionResult River(String name, String length, String length1)
{
double l = 0;
double l1 = 0;
try
{
l = (double)Int32.Parse(length);
l1 = (double)Int32.Parse(length1);
}
catch(Exception e){}
return View(data.River.Where(x => x.Length >= l && x.Length < l1 && x.Name.Contains(name) || name == null).ToList()) ;
}
导出方法
public void Export()
{
string Filename = "ExcelFrom" + DateTime.Now.ToString("mm_dd_yyy_hh_ss_tt") + ".xls";
string FolderPath = HttpContext.Server.MapPath("/SavedExcel/");
string FilePath = System.IO.Path.Combine(FolderPath, Filename);
//Condicion para saber si el archivo existe
if (System.IO.File.Exists(FilePath))
{
System.IO.File.Delete(FilePath);
}
在这里我通过了视图路线,并作为第二个参数,从那里的桌子将获取信息进行转换然后再下载
string HtmlResult = ViewConverter("~/Views/Home/RiverSuccess.cshtml", data.River);
ViewConverter方法
protected string ViewConverter(string viewName, object model)
{
if (model != null)
{
ViewData.Model = model;
}
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
上面的代码使我可以在运行应用程序时进入河流视图,并查看河流表内所有记录的列表,还有3个搜索栏,我可以在其中输入所需的条件并进行检索结果,还有一个导出按钮,单击该按钮可转换并下载整个表信息,我的预期结果是仅下载搜索结果