首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在多选列表框中预先选择项目(MVC3剃刀)

在多选列表框中预先选择项目(MVC3剃刀)
EN

Stack Overflow用户
提问于 2011-05-02 22:54:35
回答 2查看 29.5K关注 0票数 18

我在预选列表框中的项目时遇到问题。我正在使用MVC3的razor视图引擎。我知道有一些帖子有同样的问题,但它们对我不起作用。

类中的代码:

代码语言:javascript
复制
public class Foo{
    private int _id;
    private string _name;

    public string Name{
       get{
           return _name;
       }

    public int Id {
       get{
           return _id;
       }

}

模型中的代码:

代码语言:javascript
复制
public class FooModel{

    private readonly IList<Foo> _selectedFoos;
    private readonly IList<Foo> _allFoos;

    public IList<Foo> SelectedFoos{
         get{ return _selectedFoos;}
    }

    public IList<Foo> AllFoos{
         get{ return _allFoos;}
    }

}

cshtml中的代码:

代码语言:javascript
复制
 @Html.ListBoxFor(model => model.Flatschels, 
        Model.AllFlatschels.Select(fl => new SelectListItem {
             Text = fl.Name,
             Value = fl.Id.ToString(),
             Selected = Model.Flatschels.Any(y => y.Id == fl.Id)
   }), new {Multiple = "multiple"}) 

我尝试了很多其他的方法,但都不起作用。希望有人能帮上忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-03 00:32:41

我真的不能解释为什么,但我设法让它工作。这两种方法中的任何一种都有效:

代码语言:javascript
复制
@Html.ListBoxFor(m => m.SelectedFoos,
            new MultiSelectList(Model.AllFoos, "ID", "Name"), new {Multiple = "multiple"}) 

@Html.ListBoxFor(m => m.SelectedFoos, Model.AllFoos
            .Select(f => new SelectListItem { Text = f.Name, Value = f.ID }),
                new {Multiple = "multiple"}) 

问题似乎是忽略了SelectListItem上的Selected属性,而是ToString()(!)方法,所以如果您需要将此代码添加到Foo类中:

代码语言:javascript
复制
public override string ToString()
{
    return this.ID;
}

我猜这与能够跨请求持久化有关(请求将被展平为通过网络传递的字符串),但这有点令人困惑!

票数 31
EN

Stack Overflow用户

发布于 2017-12-19 08:40:56

在MVC5中,您可以直接将ListBoxFor与multiselect一起使用。确保在加载视图时,您的selectedItem应该具有项目列表。

代码语言:javascript
复制
@Html.ListBoxFor(m => m.SelectedItem, new MultiSelectList(Model.Item.ToList(), "Value", "Text"), new { @class = "form-control" })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5858679

复制
相关文章

相似问题

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