ASPNET MVC 只能在等待下一个轮回页面只能使用一个Model吗

MVC 从控制器到视图传数据 用ViewData.Model = 模式 多个页面会不会串信息 - ASP.NET当前位置:& &&&MVC 从控制器到视图传数据 用ViewData.Model = modeMVC 从控制器到视图传数据 用ViewData.Model = 模式 多个页面会不会串信息&&网友分享于:&&浏览:0次MVC 从控制器到视图传数据 用ViewData.Model = 方式 多个页面会不会串信息MVC&从控制器到视图传数据&都用ViewData.Model&=&&方式,&&&&&&多个页面都有用这一个方法传数据,&会不会&导致相互串数据呀.
我担心每个页面都是同一个属性,会不会乱掉呀,&&&本来A页面应该是接受A控制器的数据,&结果A页面却变成了B控制器的数据呢&
&public&ActionResult&GetString()
&&&&&&&&{&&&&&&&&&&&&&&&
&&&&&&&&&&&&Maticsoft.BLL.Asend&bll&=&new&Maticsoft.BLL.Asend();
&&&&&&&&&&&&List&Maticsoft.Model.Asend&&model&=&bll.GetModelList("addresser='徐海云'");&&&&&&&
&&&&&&&&&&&&ViewData.Model&=&&&&&&&&&&&&&
&&&&&&&&&&&&return&View(model);
&&&&&&&&}------解决思路----------------------每个页面之间的&ViewData&是独立的,&不会串的------解决思路----------------------不会的,是不同的对象。------解决思路----------------------不会的,每个页面的&ViewData.Model是独立的。而且生命周期也只在自己的action里
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 1234567891011 Copyright & &&版权所有扩展ASP.NET MVC三层框架且使用StructureMap实现依赖注入1-Model层
扩展ASP.NET MVC三层框架且使用StructureMap实现依赖注入1-Model层
  本篇文章将向大家介绍如何添加Service和Repository层并且使用StructureMap把Service层注入到Controller,把Repository注入到Service层。Service层主要是我们的业务逻辑层,这一层不和底层的Database打交道,和Database打交道的是Repository数据持久层。本篇文章通过使用StructureMap依赖注入使Controller,Service,Repository三层的耦合度降到最低。本系统使用NorthWind开源数据,并且使用EntityFramework5.0实现对数据库的Object映射。开始正题之前先来看一下成型的框架结构,我们将围绕这个截图进行展开。
首先我们看TYStudioDemo.Models这个Project里面的内容
  这里面有我们的EntityFramwork的edmx文件,Northwind的数据库表映射的对象集合。这里建立ADO.Net Entity Data Model的时候没有使用默认生成一文件的方式,而是使用了老的形式。实现方法是首先按默认程序建立起data model,建立好data model之后删文件。然后打开.edmx文件,右键单击空白处选择Properties(属性),会出现下面的截图,这时候只需要修改一下Code Generation Strategy(中文翻译不知道是什么,第一个就对了)的值,默认是None,我们修改为Default,然后保存.edmx
  你应该已经注意到了,项目里多了一个TYEntities.cs文件,这个我们是我们这个系统中实现Transaction(事务处理)的关键。我们使用static和[ThreadStatic]属性来保证一个线程拿到的TYEntities(ObjectContext)总是同一个,这就解决了Transaction事务的问题。没有解释到的请详细阅读下面代码里面的注释。
    复制代码 代码如下:  using S&using System.Collections.G&using System.L&using System.T&using System.Threading.T&using System.W&namespace TYStudioDemo.Models&{&&&& public partial class TYEntities&&&& {&&&&&&&& #region Fields&&&&&&&& //定义索引名称&&&&&&&& const string ContextKey = "TYEntities";&&&&&&&& //标记为ThreadStaticAttribute的静态字段不在线程之间共享。&&&&&&&& //每个执行线程都有单独的字段实例,并且独立地设置及获取该字段的值。如果在不同的线程中访问该字段,则该字段将包含不同的值。&&&&&&&& [ThreadStatic]&&&&&&&& private static TYEntities _&&&&&&&& #endregion&&&&&&&& #region Properties&&&&&&&& public bool Disposed { }&&&&&&&& /// &summary&&&&&&&&& /// 当系统工作在HttpContext下,将使用延迟家在技术返回一个TYEntities(ObjectContext),如果没有HttpContext将返回null&&&&&&&& /// &&&&&&&& /// 不论在哪里使用TYEntities,在请求结束后都需要调用TYEntities.Cleanup()方法&&&&&&&& /// 最佳的方式是TYEntities.Cleanup()放到Global.asax.cs文件里面。&&&&&&&& /// void Application_EndRequest(object sender, EventArgs e)&&&&&&&& /// {&&&&&&&& ///&&&& TYStudioDemo.Models.TYEntities.Cleanup();&&&&&&&& /// }&&&&&&&& /// &/summary&&&&&&&&& private static TYEntities ForWebRequest&&&&&&&& {&&&&&&&&&&&& get&&&&&&&&&&&& {&&&&&&&&&&&&&&&& var context = HttpContext.C&&&&&&&&&&&&&&&& //检查HttpContext是否存在&&&&&&&&&&&&&&&& if (context != null)&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&& //试着从context中得到TYEntities&&&&&&&&&&&&&&&&&&&& var result = context.Items[ContextKey] as TYE&&&&&&&&&&&&&&&&&&&& if (result == null)&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&& //创建新的datacontext,并且保存到context里面&&&&&&&&&&&&&&&&&&&&&&&& result = new TYEntities();&&&&&&&&&&&&&&&&&&&&&&&& context.Items[ContextKey] =&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&& }&&&&&&&& /// &summary&&&&&&&&& /// 这是一个用来获取TYEntities(ObjectContext)的公共属性&&&&&&&& /// &&&&&&&& /// 如果你通过HttpContext获取TYEntities,同样不论在哪里使用TYEntities,在请求结束后都需要调用TYEntities.Cleanup()方法&&&&&&&& /// &&&&&&&& /// 如果没有通过HttpContext获取TYEntities,你必须在使用结束之后调用TYEntities.Cleanup()方法,来清理ObjectContext。&&&&&&&& /// &&&&&&&& /// 需要注意的一点是,无论使用哪种方式获取TYEntities,我们都必须手动的清理和Dispose TYEntities(ObjectContext)。&&&&&&&& /// 所以一定不要在using块中使用TYEntities(ObjectContext)。&&&&&&&& /// &/summary&&&&&&&&& public static TYEntities Current&&&&&&&& {&&&&&&&&&&&& get&&&&&&&&&&&& {&&&&&&&&&&&&&&&& //从HttpContext中获取datacontext&&&&&&&&&&&&&&&& var result = TYEntities.ForWebR&&&&&&&&&&&&&&&& if (result != null)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //试着获取当前活动的TYEntities&&&&&&&&&&&&&&&& if (_current == null)&&&&&&&&&&&&&&&&&&&& _current = new TYEntities();&&&&&&&&&&&&&&&& return _&&&&&&&&&&&& }&&&&&&&& }&&&&&&&& /// &summary&&&&&&&&& /// 清理结束TYEntities(ObjectContext)&&&&&&&& /// &/summary&&&&&&&&& public static void Cleanup()&&&&&&&& {&&&&&&&&&&&& if (HttpContext.Current != null)&&&&&&&&&&&& {&&&&&&&&&&&&&&&& var result = HttpContext.Current.Items[ContextKey] as TYE&&&&&&&&&&&&&&&& if (result != null)&&&&&&&&&&&&&&&&&&&& result.Dispose();&&&&&&&&&&&&&&&& HttpContext.Current.Items[ContextKey] =&&&&&&&&&&&& }&&&&&&&&&&&& else if (_current != null)&&&&&&&&&&&& {&&&&&&&&&&&&&&&& _current.Dispose();&&&&&&&&&&&&&&&& _current =&&&&&&&&&&&& }&&&&&&&& }&&&&&&&&& protected override void Dispose(bool disposing)&&&&&&&& {&&&&&&&&&&&& bool disposed = D&&&&&&&&&&&& Disposed =&&&&&&&&&&&& if (!disposed)&&&&&&&&&&&&&&&& Cleanup();&&&&&&&&&&&& base.Dispose(disposing);&&&&&&&& }&&&&&&&& #endregion&&&& }&}
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&ASP.Net MVC开发基础学习笔记(1):走向MVC模式 - 文章 - 伯乐在线
& ASP.Net MVC开发基础学习笔记(1):走向MVC模式
一、ASP.Net的两种开发模式
1.1 ASP.Net WebForm的开发模式
(1)处理流程
在传统的WebForm模式下,我们请求一个例如的URL,那么我们的WebForm程序会到网站根目录下去寻找blog目录下的index.aspx文件,然后由index.aspx页面的CodeBehind文件(.CS文件)进行逻辑处理,其中或许也包括到数据库去取出数据(其中的经过怎样的BLL到DAL这里就不谈了),然后再由index.aspx页面来呈现给用户。
综上所述,在WebForm模式下:一个URL请求的是在服务器与该URL对应路径上的物理文件(ASPX文件或其他),然后由该文件来处理这个请求并返回结果给客户端。
(2)开发方式
o 服务器端控件
o 一般处理程序+Html静态页+Ajax
o 一般处理程序+Html模板引擎
1.2 ASP.Net MVC的开发模式
(1)处理流程
在ASP.Net MVC中,客户端所请求的URL是被映射到相应的Controller去,然后由Controller来处理业务逻辑,或许要从Model中取数据,然后再由Controller选择合适的View返回给客户端。再说回前面我们运行的ASP.NET MVC程序访问的这个URL,它访问的其实是HomeController中的Index这个Action。
(2)显著特点
o 2009年第一个开源项目版本发布,至今已过去5年,发展逐渐完善
o 更加简洁,更加接近原始的“请求-处理-响应”
o 更加开发、更多的新的特点、社区活跃
o 不会取代WebForm
o 底层跟WebForm都是一样的,只是管道上不同的处理而已
二、MVC模式的两种不同解读
MVC 模式两种理解:一种是表现模式,另外一种是架构模式。它将应用程序分成三个主要组件即:视图(View)、控制器(Controller)和模型(Model)。现在,我们来看看M-V-C分别代表什么?
M:Model 主要是存储或者是处理数据的组件;Model其实是实现业务逻辑层对实体类相应数据库操作,如:CRUD。它包括数据、验证规则、数据访问和业务逻辑等应用程序信息。(补充:ViewModel:视图模型)
V:View 是用户接口层组件。主要是将Model中的数据展示给用户。aspx和ascx文件被用来处理视图的职责;
C: Controller 处理用户交互,从Model中获取数据并将数据传给指定的View;
(1)MVC作为架构模式的理解
作为架构模式时,View的职责就是负责展示数据,而Controller则负责获取View传递来的数据,然后调用业务逻辑层处理完成的数据传递给View进行展示。而Model则处理业务逻辑,并把结果返回给Controller。从传统三层架构上来看,View和Controller都属于UI层,而Model则横跨BLL与DAL层。
(2)MVC作为表现模式的理解
(3)MVC架构模式综合模型
可以看出,对于MVC的两种不同理解的区别就在于对于Model的理解上:将Model作为业务模型(BLL、DAL等)还是作为视图模型(ViewModel)。
三、WebForm vs MVC
(1)WebForm
优点: 1.提供了大量的服务器端控件,可以实现快速开发;
2.ViewState回传数据很方便;
3.学习成本低;
缺点: 1. 封装太强,虽然学习成本低,很多底层东西让初学者不是很明白;
2. 自定义控制不灵活,不利于美工和开发人员的配合,往往那些服务器控件处理稍有不慎就会导致出错;
3. ViewState在页面中的传递会造成大量的流量消耗;
TIP:有关WebForm的服务器控件和ViewState的详细介绍,不了解的朋友可以阅读另一篇博文《》。
优点: 1.很容易将复杂的应用分成Model(ViewModel)、View、Controller三个组件模型,将处理后台逻辑代码与前台展示逻辑进行了很好的分离,属于松耦合关系,在大项目应用中,更易于敏捷开发与测试驱动开发,有很强的可扩展性;
2.因为没有服务器端控件,所以程序员控制的会更加灵活,页面更加干净,没有ViewState;
3.通过修改路由规则,可以控制生成自定义的url,因此控制生成SEO友好的URL将更加容易;
4.强类型View实现、Razor视图、Model绑定机制、Model的验证机制,更安全高效;
缺点: 学习成本高,结构复杂,对未变化数据的不必要的频繁访问,也将损害操作性能。
四、第一个ASP.Net MVC程序
4.1 新建项目后的文件组织结构
(1)新建一个ASP.Net MVC 4项目,选择“基本”配置与“ASPX”视图引擎(暂时不用Razor引擎)。
(2)VS为我们生成的基本文件组织结构如下图所示:
可以看出,VS默认帮我们创建好了Models、Views以及Controllers的三个文件夹,这三个文件夹就构成了我们的ASP.Net MVC模式的项目。其中,Controllers是所有控制器的类文件所在,而Models则是所有模型的类文件所在,而Views则是所有cshtml或aspx的文件所在。
4.2 控制器的“约定大于配置”
在Controllers中新建一个控制器,取名为HomeController。在默认的Index这个Action中新建一个视图,默认名为Index即可。
(1)Controller放到controllers文件夹中,并且命名方式以Controller结尾
(2)每个Controller都对应View中的一个文件夹,文件夹的名称跟Controller名相同
(3)Controller中的方法名都对应一个View视图(非必须,但是建议这么做)而且View的名字跟Action的名字相同
(4)控制器必须是非静态类,并且要实现IController接口
(5)Controller类型可以放到其他项目中
4.3 视图的相关约定
(1)所有的视图必须放到Views目录下
(2)不同控制器的视图用文件夹进行分割,每个控制器都对应一个视图目录
(3)一般视图名字跟控制器的Action相对应(非必须)
(4)多个控制器公共的视图放到Shared:例如公用的错误页、列表模板页、表单模板页等等;
4.4 数据传递的桥梁-ViewData与ViewBag
首先,ViewData是一个Key/Value对的字典集合数据结构,用于在Controller和View之间构建起传递数据的桥梁。
(1)ViewData是Controller的属性,此属性是继承ControllerBase而来。
(2)ViewPage下也有一个ViewData的一个属性
(3)控制器的Action方法执行完成后,返回ViewResult,然后MVC框架在执行ExcuteResult方法时,Controller中的ViewData数据会传递给ViewPage类,其实就是把Controller的ViewData赋值给ViewPage页面的ViewData属性。
(4)ViewBag传递数据:我们对ViewBag的动态属性进行赋值,值实际上是存到了ViewData中,动态属性的名存成了ViewDataDictionary的键,动态属性的值存成了ViewDataDictionary的值。
PS:ViweBag其实是就一个包含了一层Dynamic的ViewData,两个兄弟共用的是一个容器。
(5)ViewData与ViewBag的比较
它是Key/Value字典集合
它是类型对像
从Asp.net MVC 1 就有了
ASP.NET MVC3 才有
基于Asp.net 3.5 framework
基于Asp.net 4.0与.net framework
ViewData比ViewBag快
ViewBag比ViewData慢
在ViewPage中查询数据时需要转换合适的类型
在ViewPage中查询数据时不需要类型转换
有一些类型转换代码
可读性更好
(6)如何在程序中使用ViewData与ViewBag
①在Controller中的代码
public ActionResult Index()
ViewData["Name"] = "Edison Chou";
ViewBag.Name = "Edison Chou";
return View();
public ActionResult Index(){&&&& ViewData["Name"] = "Edison Chou";&&&& ViewBag.Name = "Edison Chou";&&&& return View();}
②在View中的代码
&h1&Hi,ASP.Net MVC First Demo!&/h1&
for (int i = 0; i & 5; i++)
Response.Write("Hello World!&br/&");
&p&&%: ViewData["Name"] %&&/p&
&p&&%: ViewBag.Name %&&/p&
12345678910111213
&body&&&&&&div&&&&&&&&&&h1&Hi,ASP.Net MVC First Demo!&/h1&&&&&&&&&&%&&&&&&&&&&&&for (int i = 0; i & 5; i++)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&Response.Write("Hello World!&br/&");&&&&&&&&&&&&}&&&&&&&&%&&&&&&&&&&p&&%: ViewData["Name"] %&&/p&&&&&&&&&&p&&%: ViewBag.Name %&&/p&&&&&&/div&&/body&
4.5 路由机制初步了解
我们通过调试可以知道,在MVC中所有的请求都归结到控制器下面的Action。所以,所有的请求都是要指定一个具体的Action,Url的格式是根据路由规则来定的。那么,在ASP.Net MVC的路由规则默认又是什么,在哪里设置的呢?
public class RouteConfig
public static void RegisterRoutes(RouteCollection routes)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
12345678910111213
public class RouteConfig{&&&&&&&&public static void RegisterRoutes(RouteCollection routes)&&&&&&&&{&&&&&&&&&&&&routes.IgnoreRoute("{resource}.axd/{*pathInfo}");&&&&&&&&&&&&&routes.MapRoute(&&&&&&&&&&&&&&&&name: "Default",&&&&&&&&&&&&&&&&url: "{controller}/{action}/{id}",&&&&&&&&&&&&&&&&defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }&&&&&&&&&&&&);&&&&&&&&}}
打开App_Start文件夹,可以找到RouteConfig这个类,查看RouteConfig这个类的方法,可以知道原来是RegisterRoutes这个方法为我们的ASP.Net MVC项目设置了默认的路由规则:{controller}/{action}/{id},也就是说我们可以通过http://localhost/Home/Index/1这种URL来访问项目。如果我们想要改变默认的路由规则,例如我们想要以这种URL:http://localhost/Home-Index-1来访问项目,则直接将上面的默认路由规则改为:{controller}-{action}-{id}即可。
(1)lulu Studio,《ASP.Net MVC入门:1-简介》,/QLeelulu/archive//1302462.html
(2)马伦,《ASP.Net MVC基础视频教程》,/thread-.html
(3)深山老林,《正确认识WebForm与ASP.Net MVC》,/wlb/archive//1618954.html
(4)zhaojunpeng,《ViewData和ViewBag的那些事》,/zhaojunpeng/2818
可能感兴趣的话题
我想知道好文怎么收藏,MARK
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线内容团队正试图以我们微薄的力量,把优秀的原创文章和译文分享给读者,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线asp.net mvc4中关于model的一个疑义_Global中的Application_Start不走断点,高手分析一下原因,多谢_ios应用绑定微博账号,如何实现__脚本百事通
稍等,加载中……
^_^请注意,有可能下面的2篇文章才是您想要的内容:
asp.net mvc4中关于model的一个疑义
Global中的Application_Start不走断点,高手分析一下原因,多谢
ios应用绑定微博账号,如何实现
asp.net mvc4中关于model的一个疑义
asp.net mvc4中关于model的一个疑问http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/accessing-your-models-data-from-a-controller
原文在这里,我一步一步按照教程操作,
可是到了右键controllers文件夹 add controller的时候.
我的下拉框选项里没有教程上Movie这个模型.
麻烦知道的能告诉我一下么?在下不甚感激.
------解决方案--------------------vs的问题,你编译一下,再添加controller应该就会有了------解决方案--------------------是否 添加了数据库的模型映射 比如linq to entity
如果是自己定义的模型,你完全可以在页面 直接@model TestProgram.Models.User 来引入------解决方案--------------------先编译一下 模型所属项目.------解决方案--------------------重新编译下就出来。
另外Model要定义成public类型的哦。
Global中的Application_Start不走断点,高手分析一下原因,多谢
Global中的Application_Start不走断点,高手分析一下原因,谢谢Global中的Application_Start不走断点,高手分析一下可能的原因,先谢谢了我用的是vs2008------解决方案--------------------
没用过2008try附加进程到iis , 停掉你的asp.net 网站,再启动
------解决方案--------------------Application_Start僅在網站第一次被訪問時觸發。第一次調試時,可以在Application_Start中捕獲斷點,以後是捕獲不到的。除非你:1. 更改global.asax文件並保存,再調試.2. 將IIS或者內置的ASP.NET Development Server關閉,再調試。------解决方案--------------------更正下:2. 將IIS重啟或者將內置的ASP.NET Development Server關閉,再調試。
------解决方案--------------------我的执行。我用的是VS2008C# code
&%@ Application Language="C#" %&
&script runat="server"&
void Application_Start(object sender, EventArgs e)
void Application_End(object sender, EventArgs e)
在应用程序关闭时运行的代码
ios应用绑定微博账号,如何实现
ios应用绑定微博账号,怎么实现?我要实现一个ios应用绑定微博账号的功能,就是在我的应用中,不想注册的话,就直接点击一个按钮,就可以使用新浪微博或者是QQ号码直接授权登录,点击“立即绑定微博账号”的链接,弹出授权网站的页面,点“授权”按钮,则将当前登录的用户与其微博绑定,并跳回到之前的页面,哥哥姐姐们讲一下这个其中的原理吧,,请问我要怎么做才能实现这个功能呢?O(∩_∩)O先谢谢~~啦啦啦~~~
------解决方案--------------------oc调浏览器, 浏览器里面调微博登陆页面接口,然后接收浏览器的返回值保存都本地,------解决方案--------------------新浪的sso 已经实现了你说的这些功能,只要调用它的SSO SDK里的接口就可以实现了------解决方案--------------------可以看一下这个文档,里面比较详细的讲解了如何绑定的
/wiki/授权机制说明------解决方案--------------------仔细研究一下微博的官方文档
用他们提供的SDK比较方便
如果您想提高自己的技术水平,欢迎加入本站官方1号QQ群:&&,&&2号QQ群:,在群里结识技术精英和交流技术^_^
本站联系邮箱:定义一个ViewModel类
DirectorVM
public int DirectorID { }
[Display(Name = "Director Name")]
[DataType(DataType.Text)]
public string DirectorName { }
public int HometownID { }
在一个控制器中先定义一个dbcontext实例:&
public class MoviesController : Controller
private MovieDBContext db = new MovieDBContext();
。。。。。
//在下面这个函数中调用db.Database.SqlQuery+sql语句返回List集合
public ActionResult ExportToExcelFromListDataSource(string hidForMovieGenre = "", string hidForDirector = "", string hidForMovieTitle = "")
&List&DirectorVM& list = db.Database.SqlQuery&DirectorVM&("select DirectorID,DirectorName,HometownID from Directors").ToList();
。。。。。。

我要回帖

更多关于 jsp 传值下一个页面 的文章

 

随机推荐