我在列表框中预选Items的问题。
我正在使用mvc 3的剃刀查看引擎。我知道有一些同样的问题的帖子,但他们不适合我。
我正在使用mvc 3的剃刀查看引擎。我知道有一些同样的问题的帖子,但他们不适合我。
类别代码:
public class Foo{ private int _id; private string _name; public string Name{ get{ return _name; } public int Id { get{ return _id; } }
型号代码:
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中的代码:
@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"})
我尝试了许多其他的东西,但没有任何工作。希望有人可以帮忙
解决方法
我不能真正解释为什么,但我设法让它工作。这两个工作之一:
@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类中:
public override string ToString() { return this.ID; }
我猜测它与能够持续跨请求(将被压平到字符串被传递通过线)有关,但这有点混乱!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。