首页 新闻 会员 周边

Action中如何获取Model中的对象(Model,集合等)

0
悬赏园豆:100 [已解决问题] 解决于 2011-02-22 19:18

小弟熟悉Java,但项目使用.NET MVC,刚接触.NET MVC不久,遇到问题种种,特来请教诸位前辈。

问题:

页面中有一个Model,Model有非常多字段(使用Inherits方式使用MODEL,ViewData["ModelName"]方式使用不可),我们需要在其它页面继续使用这个Model,或是在其它Action中使用。

小弟了解到Action获取View中参数有下面3种方法(Request.Form[]、Request.QueryString[]、ResultAction Index(x xxx)),但数据条数非常大,GET方式传递不可。POST方式如果一次取Model中的一个字段,代码量非常大。(这些Model的字段被隐藏在页面中)。

请问诸位前辈,View中的Model,或集合,或是一些其它对象,有什么方式可以从Action获取到么?如果获取不到,请问诸位有什么好的处理方法解决此类问题么?

问题补充: public ActionResult ActionName() { string username = Request.Form["UserName"]; string password = Request.Form["Password"]; return View(); } --------------------------------------------------- 小弟了解这种方式从View中向Controller中传递数据,我们的页面上隐藏了大量数据,这些数据是存到某个集合里。如果不像这种方式传递的话,需要写 Request.Form[]上百条。如果只向Controller传递一个对象的话,工作量会少的非常多。
骑车撞大树的主页 骑车撞大树 | 初学一级 | 园豆:100
提问于:2011-02-21 10:02
< >
分享
最佳答案
0

 mvc中除了Session之后,页面级别就只有get和post,我觉得post已经非常够了。如果是集合,我会首先实现IModelBinder(一般我会从DefaultBinder继承,如果是符合Binder条件的object,你就直接用DefaultBinder就可以了),然后set到BinderContext里面。在Action中就可以

 

[AcceptVerbs(HttpVerbs.Post)]

ActionResult Save(IList
<User> users){

// do sometion

}

 

另外如果Model有很多字段,参考kiminozo保存在Session中,获取cache这个对象。这样可以避免客户端和server端由太多的数据传递而变慢。

 

 

收获园豆:80
沉默的糕点 | 小虾三级 |园豆:1786 | 2011-02-22 14:38
非常感谢沉默的糕点这位朋友提供思路。同时也感谢其余两位朋友的热心回答。
骑车撞大树 | 园豆:100 (初学一级) | 2011-02-22 19:20
其他回答(2)
0

可以的,参考:http://www.cnblogs.com/mmmhhhlll/archive/2010/03/22/1691550.html

再给你推荐一个微软官方的示例教程,其中有示例:

http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part1-cs

收获园豆:10
artwl | 园豆:16736 (专家六级) | 2011-02-21 10:07
0

Model 是页面级的,大对象用Request也不妥。

跨页面访问可以考虑用Session存,当然还要看具体情况。

收获园豆:10
kiminozo | 园豆:245 (菜鸟二级) | 2011-02-21 22:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册