首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果在for循环中,DropDownListFor不选择值

如果在for循环中,DropDownListFor不选择值
EN

Stack Overflow用户
提问于 2010-04-14 00:40:33
回答 5查看 16K关注 0票数 30

在我看来

代码语言:javascript
复制
<%= Html.DropDownListFor( x => x.Countries[ i ], Model.CountryList )%>

在我的控制器中

代码语言:javascript
复制
public int[ ] Countries { get; set; }

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

当表单被发布时,没有问题,下拉列表被填充,用户选择的值被发布。但是,当我尝试加载已分配给国家/地区的值的表单时,它没有被选中。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-02 04:15:46

我也得到了同样的结果。当使用foreach循环一个DropDownListFor (即在一个页面上呈现多个选择元素)时。

我的变通方法是在控制器而不是视图中设置选定的值:类似于:

在控制器中:

代码语言:javascript
复制
public class FruitList 
{        
    public int? selectedFruit{ get; set; }
    public List<SelectListItem> fruits
    {
        get
        {
            fruitEntities F = new fruitEntities();
            List<SelectListItem> list = (from o in F.Options
                                         select new SelectListItem
                                         {
                                             Value = o.fruitID,
                                             Text = o.fruit,                                                 
                                             Selected = o.fruitID == selectedFruit
                                         }).ToList();
            return list;
        }
    }
}

public class ViewModel 
{              
    public List<FruitList> collectionOfFruitLists { get; set; }        
}

在视图中

代码语言:javascript
复制
<table>                        
   <% for (int i=0; i < Model.collectionOfFruitLists.Count; i++ )
        { %>
        <tr>                            
            <td><%: Html.DropDownList("fruitSelectList", collectionOfFruitLists[i].fruits, "Please select...") %></td>                
        </tr>
        <%} %>
 </table>

最妙的地方是控制器中的Selected = o.fruitID == selectedFruit,它的作用类似于SQL CASE语句;Lance Fisher对此进行了很好的解释(感谢兰斯,你的帖子真的帮了我的忙:)

票数 10
EN

Stack Overflow用户

发布于 2013-04-09 22:03:32

不确定这是mv4的新特性还是在以前的版本中存在。但是DropDownListFor包含了一个用于SelectList构造函数的附加参数。

代码语言:javascript
复制
SelectList(IEnumerable, String, String, Object)

例如:

代码语言:javascript
复制
Html.DropDownListFor( x => x.Countries[ i ], New SelectList(Model.CountryList,"ID","Description",Model.Countries[i]))

其中IDCountryList对象中的国家/地区ID,Description是国家/地区名称。

票数 30
EN

Stack Overflow用户

发布于 2016-08-31 04:41:54

我知道这个问题有点老了,但我只是在遍历对象列表并尝试将值绑定到我的编辑视图中的DropDownListFor时遇到了这个问题。

我用一个内联解决方案克服了这个问题,我使用了其他人为这个问题提供的一些以前解决方案中的逻辑。

绑定到我的模型:

代码语言:javascript
复制
@Html.DropDownListFor(model => model.QuestionActions[i].QuestionActionTypeId,
      Model.QuestionActionTypes.Select(x => new SelectListItem() { Value = x.Value, Text = x.Text, Selected = (x.Value == Model.QuestionActions[i].QuestionActionTypeId.ToString()) }).ToList(),
          "Select Action Type",
                 new { })

Model.QuestionActionTypes是一个填充在我的控制器中的SelectList。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2631397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档