简单的视图模型可以利用controller自动解析实体对象,如果是复杂一点的,有一对多关系的字段怎么处理?
比如页面内有一个表单对应多个表(使用视图模型组合起来了),还有一个JS创建的动态table对应一个表,需要整体POST提交到controller。
除了用js组装json发回去还有其他解决方案吗?
写个 ViewModel,把几个独立的 Model 组装起来。
我的问题是复杂视图模型POST提交到controller
@Y叔: 一样的。
@Launcher: 如果字段不一样用不同的model可以获取,但是table里的tr对应一条记录这个怎么提交,只能用js处理了吧?
@Y叔: 如果绑定给页面的是 List<Class1> 类型,显示出来的是不是就是 table 里 tr 一条一条的记录?反过来,如果 table 里是 tr 一条一条的记录,是不是可以用 List<Class1> 来映射?
@Y叔: 你用啥来处理,没关系,重要的是你按照 List<Class1> 来序列化成 json 或者 xml post ,那么服务器就能按照 json 或 xml 反序列化成 List<Class1>。
@Launcher:
假设情况是这样的:
Class A {
XClass x{get;set;} // class
XXClass xx{get;set;} // class
IList<xxxClass> xxx{get;set;}
}
[POST]
public void Test(A a) {
// a 是个空对象,js按json传回来的
}
@Y叔: 我教你个方法,http://blog.csdn.net/jacksover/article/details/8163249,然后你抓个包看下请求头的设置和请求内容的格式。比如:Content-type: JSON。
@Launcher:
我用ajax提交的数据
@Y叔: 你发出去的请求应该是这样的:
GET http://xxxxxxx/your_mvc/your_controller/Test HTTP/1.1
Content-type: application/json
Content-length: 1234
{key:"value",key:"value",key:{key:"value"}}
上面这个请求的格式能看懂么?看不懂的话,你用 Fildder 抓个包,随便访问一个网页,看下抓取的包的请求的格式。
@Launcher: 改了type 可以了,感谢