【发布时间】:2010-10-27 19:26:49
【问题描述】:
曾几何时,我有一个 DropDownList,其中包含使用此代码构建的选项:
<%= Html.DropDownList("SomeName", someSelectList)%>
生成这样的 HTML:
<select id="SomeName" name="SomeName">
<option>ABC</option>
<option>DEF</option>
<option>GHI</option>
<option>JKL</option>
</select>
表单提交总是会通过 ModelBinding 将上述选项之一返回给我班级的公共成员“SomeName”。然后,我的内部验证代码将从内部字典中选择正确的数值。生活很好。
然后我被要求在单独的文本框中显示通过 Javascript/JQuery 选择的数值。所以现在我有以下选择:
<select id="SomeName" name="SomeName">
<option value="50">ABC</option>
<option value="10">DEF</option>
<option value="25">GHI</option>
<option value="10">JKL</option>
</select>
以及下面的 JQuery 代码:
$(document).ready(function() {
$('#SomeName').change(function() {
$("input#someNumber").val($('#SomeName').val());
});
});
用户选择字符串并在框中显示数值。太好了。
现在的问题是,当Form被提交时,Model Binding得到的是数值(例如50)而不是String(例如ABC)
如何覆盖此行为并再次获取选定的字符串?
【问题讨论】:
-
何必呢?您之前已经根据字符串查找数字。现在你只是得到了这个数字。砍掉进行查找的代码,对更少的代码感到满意。 ...或者还有更多内容吗?
-
编号不唯一。某些文本选项具有相同的编号。我正在使用的模型(类)需要文本和数字。并且两者都需要在用户使用它时对用户可见。以前,我在回发后显示了号码以进行验证,但我的用户不喜欢这样,并且希望一切都是 Javascripty 光滑的。
标签: asp.net-mvc drop-down-menu html-select model-binding