小弟熟悉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获取到么?如果获取不到,请问诸位有什么好的处理方法解决此类问题么?
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端由太多的数据传递而变慢。
可以的,参考:http://www.cnblogs.com/mmmhhhlll/archive/2010/03/22/1691550.html
再给你推荐一个微软官方的示例教程,其中有示例:
http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part1-cs
Model 是页面级的,大对象用Request也不妥。
跨页面访问可以考虑用Session存,当然还要看具体情况。