我想我错过了一些简单的东西,但我只是没有看到它。我有一个ASP.NET MVC应用程序,它根据另一个下拉列表的值动态构建下拉列表。下拉列表正在正确填充,但是当表单回发时,组合的值由于某种原因未被回发。
$(document).ready(function () {
PopulateList();
$("#List").change(GetSelectedItem);
});
function PopulateList() {
var timeSlot = $("#Timeslot").val();
var options = [];
var list = 0;
$.getJSON("GetList/" + timeSlot, "", function (data, textStatus) {
for (var i = 0; i < data.length; i++) {
options.push('<option value="',
data[i].ID, '">',
data[i].Name, '</option>');
}
$("#List").html(options.join(''));
if (data.length > 0)
list = data[0].ID;
GetSelectedItem(timeSlot, list);
});
在视图中我还有以下内容:
<% Html.BeginForm(); %>
<select id="List" style="width:120px"></select>
(lots of HTML removed)
<% Html.EndForm(); %>
我已经仔细检查了显示$(“#List”)。html()生成的标记,看起来没问题。我还检查过以确保下拉列表中包含下拉列表,并且此下拉列表周围没有任何其他未终止的字符串可能会干扰它。我可以检查动态构建的下拉列表的值,并正确设置值。我看过是通过Fiddler和Firebug发回的,这个字段丢失了(所以不是MVC过滤它。)
我错过了什么?
答案 0 :(得分:1)
要在提交<form>
时加入,您的元素需要name
attribute,如下所示:
<select id="List" name="List" style="width:120px"></select>