首页 新闻 会员 周边

mvc DropDownListFor和DropDownList

0
悬赏园豆:20 [已关闭问题] 关闭于 2015-08-17 13:16

经过查询资料和自己的测试,发现

@Html.DropDownListFor(M=>M.A, Model.A)

@Html.DropDownList("A", Model.A)

不能使用相同的名称,否则设置默认值无效,有没有官方的说明说这2者不能是一样名称的

bird man的主页 bird man | 初学一级 | 园豆:4
提问于:2015-08-06 17:35
< >
分享
所有回答(2)
1

都是生成html元素,你设置一样的name,怎么搞?这个官方不用说明,因为怎么用权利在你手里。

幻天芒 | 园豆:37175 (高人七级) | 2015-08-07 08:57

并不是上面2个写在同一个页面,单独的一个都是错的

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-08-07 17:16

@bird man: 单独一个都是错的,是因为你用法错误。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2015-08-07 21:46

@幻天芒: 我换个问法吧,为什么@Html.DropDownList("A", Model.A)使用这个的时候不能设置默认值,如果使用@Html.DropDownList("B", Model.A)就可以

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-08-10 14:43

@bird man: 我是想说,你这样的用法对么?

//DropDownListFor的用法
@Html.DropDownListFor(M=>M.A, IEnumerable<SelectListItem> selectList, object htmlAttributes)
//此时要设置选中项的话,只需要对Model中A的属性赋值即可。

//DropDownList的用法
@Html.DropDownList(string name,IEnumerable<SelectListItem> selectList, object htmlAttributes)
//此时要设置选择项的话,需要将selectList中的某一个项的Selected设置为true。
支持(1) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2015-08-10 19:35

@幻天芒: 正如你所说的,DropDownListFor 我设置了IEnumerable<SelectListItem> selectList中某个项为选中的,使用@Html.DropDownListFor(M=>M.A, Model.A)这种写法的时候无法实现默认值选中.

@Html.DropDownListFor(M=>M.B, Model.A)却可以,运行之后除了默认值以外其他都一样,@Html.DropDownList也是出现上面一样的情况,不知道你有没有测试过

假设Model类如下有如下

public class Model

{

public List<SelectListItem> A{get;set;}

public string B{get;set;}

}

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-08-11 10:13

@bird man: 在使用DropDownListFor的时候,设置默认值是通过M.A来设置的,不是在selectList中设置选中项。你的第一种做法中:M.A是和Model.A相等的,这样的用法实际上是错误的。M.A应该是一个string才对。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2015-08-11 11:59

@幻天芒: 那为什么DropDownList在使用的时候,Html.DropDownList("A", Model.A)这样也会出现无法选择默认值呢,这里name和selectlist应该不会算是一个了吧

//DropDownList的用法 @Html.DropDownList(string name,IEnumerable<SelectListItem> selectList, object htmlAttributes)

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-08-12 13:24

@bird man: 这种用法中,默认值需要在selectList中的一个项上设置Selected=true。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2015-08-12 14:01

@幻天芒: Html.DropDownList("A", Model.A)这么写,默认值不行,但是Html.DropDownList("A", IEnumerable<SelectListItem> selectList)这样就正常,好奇怪的

谢谢帮忙

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-08-12 16:06

@bird man: Model.A中设置 了默认值么?

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2015-08-13 10:39

@幻天芒: 设置了

支持(0) 反对(0) bird man | 园豆:4 (初学一级) | 2015-08-13 12:59
0

纸上谈兵啊....

bird man | 园豆:4 (初学一级) | 2015-08-17 13:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册