asp.net-mvc – 为什么ListBoxFor不选择项目,但ListBox是?
|
我在我的视图中有以下代码: <%= Html.ListBoxFor(c => c.Project.Categories,new MultiSelectList(Model.Categories,"Id","Name",new List<int> { 1,2 }))%>
<%= Html.ListBox("MultiSelectList",2 }))%>
唯一的区别是,第一个助手是强类型(ListBoxFor),它无法显示所选项目(1,2),即使项目出现在列表中等等。更简单的ListBox是按预期工作。 我显然缺少这里的东西。我可以使用第二种方法,但这真的在欺骗我,我想知道。 供参考,我的模型是: public class ProjectEditModel
{
public Project Project { get; set; }
public IEnumerable<Project> Projects { get; set; }
public IEnumerable<Client> Clients { get; set; }
public IEnumerable<Category> Categories { get; set; }
public IEnumerable<Tag> Tags { get; set; }
public ProjectSlide SelectedSlide { get; set; }
}
更新 我刚刚将ListBox名称更改为Project.Categories(匹配我的模型),现在它失败选择项目。 <%= Html.ListBox("Project.Categories",2 }))%>
我显然不明白这里发生的魔法。 更新2 好的,这是纯粹命名,例如,这工作… <%= Html.ListBox("Project_Tags",new MultiSelectList(Model.Tags,Model.Project.Tags.Select(t => t.Id)))%>
…因为字段名称是Project_Tags,而不是Project.Tags,事实上,除了Tags或Project.Tags之外的任何东西都将工作。我不明白为什么这会导致一个问题(除了它匹配实体名称),我不够好,在这能够挖掘和找出。 解决方法我自己偶然遇到了这个问题,最后我意识到这个问题是一个命名约定。您不能将包含SelectList或MultiSelectList的ViewBag或ViewData poperty命名为包含所选项目的属性模型的相同名称。至少不是如果你使用ListBoxFor或DropDownListFor帮手。 这里有一个例子: public class Person
{
public List<int> Cars { get; set; }
}
[HttpGet]
public ActionResult Create()
{
//wont work
ViewBag.Cars = new SelectList(carsList,"CarId","Name");
//will work due to different name than the property.
ViewBag.CarsList = new SelectList(carsList,"Name");
return View();
}
//View
@Html.ListBoxFor(model => model.Cars,ViewBag.CarsList as SelectList)
我相信大量的其他方式做这个,但它解决了我的问题,希望它会帮助别人! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – Form .NET中的输入元素名称
- asp.net – 按钮点击后如何启动另一个aspx网页?
- asp.net-mvc-3 – R#6 – 在剃刀视图中建议“使用目录”.如
- asp.net-mvc – ASP.Net MVC捆绑和分类
- asp.net-mvc – MVC – 更改模型的视图中的值[封闭]
- asp.net-mvc – angular js和asp.net mvc 4示例应用程序
- asp.net – 部署后强制刷新网站
- asp-classic – 如何将字符串转换为日期时间格式的经典asp
- asp.net-mvc-5 – WebJob和SignalR Hub之间的通信
- asp.net-mvc – 在MVC4中路由具有扩展名的url将无法正常工作
- asp.net-mvc – 如何在MVC6或AspNet Core或Ident
- asp.net – VS 2010 Web.config转换进行调试
- ASP.NET C#,需要按两次按钮才能发生一些事情
- 每个“HttpRequest”在ASP.NET中都有自己的线程吗
- asp.net-mvc – 使用IIS 7中的ASP.NET MVC 1来路
- .net – Cache.Add绝对到期 – 是否基于UTC?
- asp.net – 如何在WebPage中显示嵌入的Excel文件
- .net – 我应该如何设计一个允许IoC的类库,但不依
- asp.net-mvc-4 – ASP.NET优化 – 捆绑
- asp.net – 在哪里可以下载DLR的Managed JScript
