【发布时间】:2014-11-16 22:48:18
【问题描述】:
我有一个(可能很简单)问题。 我很难解释我到底想要做什么。
我有一个页面循环遍历项目列表并为每个项目创建一个新选项卡。 我正在使用引导选项卡 (这行得通) 我知道这是可怕的 MVC -> 但我对 Web 开发相当陌生 - 这就是为什么我觉得我在池 atm 的深处。
@foreach (var item in Model.Items)
{
<li role="presentation">
<a href="#@item.EndDate.ToString("M").Replace(" ", "")" aria-controls="@item.EndDate.ToString("M").Replace(" ", "")" role="tab" data-toggle="tab">@item.EndDate.ToString("d")</a>
</li>
}
@using (Html.BeginForm())
{
<div class="tab-content col-md-10">
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@foreach (var item in Model.Items)
{
<div role="tab-pane" class="tab-pane" id="@item.EndDate.ToString("M").Replace(" ", "")">
<div class="col-md-5">
<div>
@Html.LabelFor(mx => item.Assignment)
</div>
etc...
在每个选项卡中,我都有一些文本框和一些其他内容以及一个下拉列表,它基本上是其他内容的选择器。下拉菜单如下所示。
<div>
@{
var listItems = new List<ListItem> { new ListItem { Text = "Calendar", Value = "Calendar" }, new ListItem { Text = "Email", Value = "Email" } };
}
@Html.DropDownListFor(x => item.Type, new SelectList(listItems), "-- Select Type --", new { @id = item.ItemId +"_TypeSelector", @class="TypeSelector" })
@Html.ValidationMessageFor(x => item.Type)
</div>
我的问题;
下拉菜单没有根据模型值选择正确的值。
提前谢谢..
【问题讨论】:
-
实际上根本行不通。您的
foreach循环正在创建重复的id(无效的html)和name属性,因此当您回帖时,任何内容都不会绑定到您的集合。因为您创建了一个下拉列表,所以您需要为您的模型创建一个自定义EditorTemplate,如 this answer 中所示 -
Om 实际上是通过添加带有字符串的项目 id 来赋予所有东西唯一的 id,因此所有 id 实际上都是唯一的
-
好的,错过了,但是它们具有相同的名称,因此它们不会回发到集合中。根据链接使用
EditorTemplate,不仅可以使用索引器正确命名它们,还可以为它们提供唯一的ID(因此无需使用html属性添加)并根据属性Type的值选择正确的选项 -
哦,那太酷了。我去看看,谢谢
-
我还有一些 javascript 可以检查“更改”事件 - 这是否适用于这个解决方案 - 检查每个不同的下拉菜单是否具有相同的类?
标签: jquery asp.net-mvc twitter-bootstrap