我现在正在使用此tutorial。
(我相信我的问题与强类型收藏有关......我在互联网上看到的,但我可能错了)
请耐心等待。 :)
我一直遇到这个问题,我在另一个问题question中,答案看起来很好,但是在对代码进行修补之后,我意识到问题在于使用的字段我的自定义局部视图,例如,不要像使用TextBoxFor html帮助的字段那样添加前缀。例如。当我点击添加一个新项目时,它会添加它,但是使用与之前添加的项目相同的ID,那么我的Javascript会失败,因为有两个具有相同ID的项目。
尝试澄清问题的一些代码
部分视图
@model Portal.ViewModels.Micros
@using Portal.Helpers
<div class="editorRow" style="padding-left:5px">
@using (Html.BeginCollectionItem("micros"))
{
@Html.EditorFor(model => model.Lab_T_ID)
@Html.EditorFor(model => model.Lab_SD_ID)
@Html.TextBoxFor(model => model.Result)
<input type="button" class="deleteRow" title="Delete" value="Delete" />
}
</div>
TextBoxFor(Result)呈现为
<input id="micros_5e14bae5-df1b-4c42-9e96-573a8e52f8b2__Result" name="micros[5e14bae5-df1b-4c42-9e96-573a8e52f8b2].Result" type="text" value="">
编辑器用于呈现为
<select id="Lab_SD_ID" multiple="multiple" style="width: 300px; display: none; " >
<option value="5" selected="selected">Taken at Packing 1</option>
<option value="6">Taken at Packing 2</option>
<option value="7">Taken at Packing 3</option>
</select>
<button type="button" class="ui-multiselect ui-widget ui-state-default ui-corner-all" aria-haspopup="true" tabindex="0" style="width: 300px; ">
<span class="ui-icon ui-icon-triangle-2-n-s"></span><span>Taken at Packing (Winc 4/5-25d)</span></button>
如果需要,我可以包含更多代码,还有一个帮助器类(BeginCollectionItem),我使用它也位于教程中的演示项目中。
我基本上需要了解“微观[5e14bae5-df1b-4c42-9e96-573a8e52f8b2]”。就我所见,它被附加到输入框,但到目前为止已被它难倒:/
答案 0 :(得分:2)
这适用于TextBoxFor而非自定义EditorFor的原因是因为TextBoxFor助手尊重模板导航上下文,而在编辑器模板中,您只需硬编码一个甚至没有名称的<select>
元素。我建议您在生成输入字段时使用HTML帮助程序:
因此,请将自定义模板中的硬编码选项替换为:
@model int?
@{
var values = ViewData.ModelMetadata.AdditionalValues;
}
<span>
@Html.DropDownList(
"",
Enumerable.Empty<SelectListItem>(),
new {
multiple = "multiple",
style = "width:" + values["comboboxWidth"] + "px",
data_url = Url.Action((string)values["action"], (string)values["controller"]),
data_noneselectedtext = values["noneSelectedText"],
data_value = values["id"],
data_text = values["description"]
}
)
</span>