Model view controller 如何使用MVC Contrib将变量从一个控制器传递到另一个控制器?
Jeremy Skinner有一个关于从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
这是杰里米的链接。谢谢 我最终创建了一个会话变量,如下所示: 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));
}