问题描述
内容:一个商品里有多张图片,图片有2个信息:名称、描述前台代码:<formaction=""method="post"><inputname="Id"value="1"/><inputname="ProductName"value="产品1"/><inputname="Name"value="图片1"/><inputname="Desc"value="图片描述2"/><inputname="Name"value="图片2"/><inputname="Desc"value="图片描述1"/><inputtype="submit"value="确定"/></form>
publicclassProductModel{publicintId{get;set;}publicstringProductName{get;set;}publicIEnumerable<ImageModel>Images{get;set;}}publicclassImageModel{publicstringName{get;set;}publicstringDesc{get;set;}}
我进行模型绑定不成功,ImageModel的值为Null[HttpPost]publicActionResultIndex(ProductModelclass1){returnView();}
问题:MVC默认的模型绑定器里有提供对我这种情况的绑定?如果有,我需要修改哪些地方?如果没有,对于这种需要,应该用什么方式比较好?
解决方案
解决方案二:
你给这个模型赋值了吗?没看到代码
解决方案三:
引用1楼wangjun8868的回复:
你给这个模型赋值了吗?没看到代码
这是MVC默认的模型绑定,不用手写赋值,publicActionResultIndex(ProductModelclass1)这里传进去的模型就进行了赋值操作了
解决方案四:
引用2楼qiangshengpeng的回复:
Quote: 引用1楼wangjun8868的回复:
你给这个模型赋值了吗?没看到代码这是MVC默认的模型绑定,不用手写赋值,publicActionResultIndex(ProductModelclass1)这里传进去的模型就进行了赋值操作了
MVC里是不用给控件赋值(如果控件是用For绑定的),但是模型不赋值,计算机怎么读取数据到模型难道咱们两个理解的不是一回事?
解决方案五:
引用3楼wangjun8868的回复:
Quote: 引用2楼qiangshengpeng的回复:
Quote: 引用1楼wangjun8868的回复:
你给这个模型赋值了吗?没看到代码这是MVC默认的模型绑定,不用手写赋值,publicActionResultIndex(ProductModelclass1)这里传进去的模型就进行了赋值操作了
MVC里是不用给控件赋值(如果控件是用For绑定的),但是模型不赋值,计算机怎么读取数据到模型难道咱们两个理解的不是一回事?
[HttpPost]publicActionResultIndex(ProductModelclass1){returnView();}我的意思是post请求过来的的request通过这个方法已经赋值给ProductModel对应的字段了,但是还有部分字段没有赋值过来,所以来请教一下
解决方案六:
引用4楼qiangshengpeng的回复:
Quote: 引用3楼wangjun8868的回复:
Quote: 引用2楼qiangshengpeng的回复:
Quote: 引用1楼wangjun8868的回复:
你给这个模型赋值了吗?没看到代码这是MVC默认的模型绑定,不用手写赋值,publicActionResultIndex(ProductModelclass1)这里传进去的模型就进行了赋值操作了
MVC里是不用给控件赋值(如果控件是用For绑定的),但是模型不赋值,计算机怎么读取数据到模型难道咱们两个理解的不是一回事?
[HttpPost]publicActionResultIndex(ProductModelclass1){returnView();}我的意思是post请求过来的的request通过这个方法已经赋值给ProductModel对应的字段了,但是还有部分字段没有赋值过来,所以来请教一下
懂你的意思了,你post过来的数据有一部分是空的,是因为界面上的控件和模型是以一一对应的,如果是一多的模型(涉及操作多个表)控件是无法只能探测这种层级结构的(其实还有更复杂的模型),也许MVC有这种本事,但是据我了解我还真不知道...
解决方案七:
引用4楼qiangshengpeng的回复:
Quote: 引用3楼wangjun8868的回复:
Quote: 引用2楼qiangshengpeng的回复:
Quote: 引用1楼wangjun8868的回复:
你给这个模型赋值了吗?没看到代码这是MVC默认的模型绑定,不用手写赋值,publicActionResultIndex(ProductModelclass1)这里传进去的模型就进行了赋值操作了
MVC里是不用给控件赋值(如果控件是用For绑定的),但是模型不赋值,计算机怎么读取数据到模型难道咱们两个理解的不是一回事?
[HttpPost]publicActionResultIndex(ProductModelclass1){returnView();}我的意思是post请求过来的的request通过这个方法已经赋值给ProductModel对应的字段了,但是还有部分字段没有赋值过来,所以来请教一下
看前台赋值代码是否少了字段,而且你的实体对象里面存的是单个你页面上面是2个这种情况要循环处理吧
解决方案八:
你前台得处理下imageModel你得把它设置成数组
解决方案九:
@foreach(ImageModeloInfoinProductModel.Images){<inputname="Name"value="@info.name"/><inputname="Desc"value="@info.Decs"/>}
解决方案十:
模型上的属性要和input上的name属性对应如果自定义模型不能处理自定义的复杂属性那么自己用Model.Para=Request.Form[""]填充或者看看下面http://www.cnblogs.com/lzhp/archive/2013/03/30/2987759.html