2

我认为我有这段代码:

    <div class="drop-down-list">
        <%: Html.EditorFor(model => model.StageId,new { id="hiddenStageID"}) %>
        <%: Html.ValidationMessageFor(model => model.StageId) %>
    </div>

这是我设置 EditorFor 值的 javascript 代码。但它不起作用:

<script>
           var e = document.getElementById("stageTwoView");
           var listIndex = e.selectedIndex;
           var stageIdVal = list[listIndex].valueOf();
           document.getElementById('hiddenStageID').value = stageIdVal;
</script>

例如 stageIdVal 得到这个值:“1003”。但是最后一行不起作用!为什么?

4

1 回答 1

2

EditorFor不接受htmlAttributes作为参数(这是我认为你所期待的);那将是TextBoxFor

您所做的是传递additionalViewData给编辑器模板,因此除非您在 EditorTemplate 中使用它,否则您实际上不会为元素分配 ID(因此无法使用 JS 检索它)。

如果你想给文本字段一个 ID,要么自定义你的编辑器模板,要么使用它,TextBoxFor这样你就可以传递额外的属性:

@Html.TextBoxfor(x => x.StageId, new { id = "hiddenStageID" })

除非我错了(我可能是因为我面前没有可见的模板。您可能已经自定义了它,在这种情况下,我只是做出不准确的假设,我可以更新我的答案)。

于 2013-04-08T18:37:29.950 回答