Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model view controller 如何使用MVC Contrib将变量从一个控制器传递到另一个控制器?_Model View Controller_Mvccontrib_Mvccontrib Grid - Fatal编程技术网

Model view controller 如何使用MVC Contrib将变量从一个控制器传递到另一个控制器?

Model view controller 如何使用MVC Contrib将变量从一个控制器传递到另一个控制器?,model-view-controller,mvccontrib,mvccontrib-grid,Model View Controller,Mvccontrib,Mvccontrib Grid,Jeremy Skinner有一个关于从MVC Contrib导出电子表格的博客和视频。问题是他的视频或博客中没有进行过滤。在与包含网格的页面相关联的控制器中,我有过滤器,在与“导出到电子表格”相关联的控制器中,我需要过滤器而不必重置。问题是,每次单击“导出到电子表格”时,变量都会重置“链接。如何在不重置的情况下将该变量从一个控制器传递到另一个控制器 这是杰里米的链接。谢谢 我最终创建了一个会话变量,如下所示: 1-通过使用以下内容编辑web.config来启用会话变量: <configu

Jeremy Skinner有一个关于从MVC Contrib导出电子表格的博客和视频。问题是他的视频或博客中没有进行过滤。在与包含网格的页面相关联的控制器中,我有过滤器,在与“导出到电子表格”相关联的控制器中,我需要过滤器而不必重置。问题是,每次单击“导出到电子表格”时,变量都会重置“链接。如何在不重置的情况下将该变量从一个控制器传递到另一个控制器


这是杰里米的链接。谢谢

我最终创建了一个会话变量,如下所示:

1-通过使用以下内容编辑web.config来启用会话变量:

<configuration>
   <system.web>
      <sessionState cookieless="true" regenerateExpiredSessionId="true" />
   </system.web>
</configuration>
3-在第二个控制器中使用会话状态

string firstName = (string)(Session["FirstName"]);
使用TempData[“”]对象

您的ViewModel应该类似于:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using MvcContrib.Pagination;
using MvcContrib.UI.Grid;
using System.Web.Mvc;

namespace MyMVCProject.ViewModels
{
    public class SubscriptionViewModel
    {
        public int SubscriptionID { get; set; }        
        public string SubNo { get; set; }               
    }
    public class SubscriptionListContainerViewModel
    {
        public IPagination<SubscriptionViewModel> SubscriptionPagedList { get; set; }
        public SubscriptionFilterViewModel Filters { get; set; }
        public GridSortOptions GridSortOptions { get; set; }
        public int? TotalCount { get; set; }
    }
    public class SubscriptionFilterViewModel
    {
        public int? CustomerID { get; set; }
        public int? PlanID { get; set; }        
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统组件模型;
使用MvcContrib.Pagination;
使用MvcContrib.UI.Grid;
使用System.Web.Mvc;
命名空间MyMVCProject.ViewModels
{
公共类订阅视图模型
{
公共int SubscriptionID{get;set;}
公共字符串SubNo{get;set;}
}
公共类订阅ListContainerServiceModel
{
公共IPagination SubscriptionPagedList{get;set;}
公共SubscriptionFilterViewModel筛选器{get;set;}
公共网格排序选项网格排序选项{get;set;}
public int?TotalCount{get;set;}
}
公共类SubscriptionFilterViewModel
{
public int?CustomerID{get;set;}
公共int?PlanID{get;set;}
}
}
您的控制器操作:

    public ActionResult Index(SubscriptionListContainerViewModel model, GridSortOptions gridSortOptions, int? page)
            {
              SubscriptionFilterViewModel filter = new SubscriptionFilterViewModel();
                if (model.Filters != null)
                {
                    filter.CustomerID = model.Filters.CustomerID;
                    filter.PlanID = model.Filters.PlanID;
                }
              TempData["Filters"]=filter;
             //code for IPagination<SubscriptionViewModel> population.
            }
公共操作结果索引(SubscriptionListContainerServiceWModel模型、GridSortOptions、GridSortOptions、int?页) { SubscriptionFilterViewModel筛选器=新的SubscriptionFilterViewModel(); 如果(model.Filters!=null) { filter.CustomerID=model.Filters.CustomerID; filter.PlanID=model.Filters.PlanID; } TempData[“过滤器”]=过滤器; //IPagination人口代码。 } 导出功能:

public void Export()
        {
          SubscriptionFilterViewModel filter = (SubscriptionFilterViewModel)TempData["Filters"];
          TempData["Filters"]=filter;
          //code for IPagination<SubscriptionViewModel> population and excel creation.
          //output the excel after creation

            Guid fileId = Guid.NewGuid();
            string strFileName = Convert.ToString(fileId) + ".xls";
            string strFilePathnName = HttpContext.Server.MapPath ("~/Content/Uploads/Excels/Export/") + strFileName;
            MemoryStream file = new MemoryStream();
            hssfworkbook.Write(file);
            System.IO.File.WriteAllBytes(strFilePathnName, file.GetBuffer());
            System.IO.FileInfo inf = new FileInfo(strFilePathnName);
            HttpContext.Response.AddHeader("Content-Disposition", "attachment; filename=Blogs" + inf.Extension);
            HttpContext.Response.ContentType = "application/ms-excel";
            HttpContext.Response.TransmitFile(HttpContext.Server.MapPath ("~/Content/Uploads/Excels/Export/" + strFileName));
        }
public void导出()
{
SubscriptionFilterViewModel筛选器=(SubscriptionFilterViewModel)TempData[“筛选器”];
TempData[“过滤器”]=过滤器;
//用于IPagination填充和excel创建的代码。
//创建后输出excel
Guid fileId=Guid.NewGuid();
字符串strFileName=Convert.ToString(fileId)+“.xls”;
字符串strfilepathname=HttpContext.Server.MapPath(“~/Content/Uploads/Excels/Export/”)+strFileName;
MemoryStream file=新的MemoryStream();
hssfworkbook.Write(文件);
System.IO.File.writealBytes(strFilePathnName,File.GetBuffer());
System.IO.FileInfo inf=新文件信息(strfilepathname);
HttpContext.Response.AddHeader(“内容处置”、“附件;文件名=博客”+inf.Extension);
HttpContext.Response.ContentType=“应用程序/ms excel”;
HttpContext.Response.TransmitFile(HttpContext.Server.MapPath(“~/Content/Uploads/Excels/Export/”+strFileName));
}

单击“导出到Excel”按钮,调用导出操作。

谢谢您的评论,但我的看起来大不相同。我做的和杰里米的非常相似。public ActionResult Export(){var customers=customerRepository.FindAll();返回新的ExcelResult(customers).Columns(column=>{column.For(x=>x.Id);column.For(x=>x.Name);column.For(x=>x.DateOfBirth).Format(“{0:d}”);});}
public void Export()
        {
          SubscriptionFilterViewModel filter = (SubscriptionFilterViewModel)TempData["Filters"];
          TempData["Filters"]=filter;
          //code for IPagination<SubscriptionViewModel> population and excel creation.
          //output the excel after creation

            Guid fileId = Guid.NewGuid();
            string strFileName = Convert.ToString(fileId) + ".xls";
            string strFilePathnName = HttpContext.Server.MapPath ("~/Content/Uploads/Excels/Export/") + strFileName;
            MemoryStream file = new MemoryStream();
            hssfworkbook.Write(file);
            System.IO.File.WriteAllBytes(strFilePathnName, file.GetBuffer());
            System.IO.FileInfo inf = new FileInfo(strFilePathnName);
            HttpContext.Response.AddHeader("Content-Disposition", "attachment; filename=Blogs" + inf.Extension);
            HttpContext.Response.ContentType = "application/ms-excel";
            HttpContext.Response.TransmitFile(HttpContext.Server.MapPath ("~/Content/Uploads/Excels/Export/" + strFileName));
        }