如何将查询结果作为参数传递给下载方法?

时间:2019-07-29 16:24:28

标签: asp.net-mvc

我正在创建一个网页,允许我使用搜索栏过滤数据库中的信息,并可以选择将搜索结果导出(下载)为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个搜索栏,我可以在其中输入所需的条件并进行检索结果,还有一个导出按钮,单击该按钮可转换并下载整个表信息,我的预期结果是仅下载搜索结果

0 个答案:

没有答案