给定以下类和控制器操作方法:
public School { public Int32 ID { get; set; } publig String Name { get; set; } public Address Address { get; set; } } public class Address { public string Street1 { get; set; } public string City { get; set; } public String ZipCode { get; set; } public String State { get; set; } public String Country { get; set; } } [Authorize(Roles = "SchoolEditor")] [AcceptVerbs(HttpVerbs.Post)] public SchoolResponse Edit(Int32 id, FormCollection form) { School school = GetSchoolFromRepository(id); UpdateModel(school, form); return new SchoolResponse() { School = school }; }
以及以下形式:
<form method="post"> School: <%= Html.TextBox("Name") %><br /> Street: <%= Html.TextBox("Address.Street") %><br /> City: <%= Html.TextBox("Address.City") %><br /> Zip Code: <%= Html.TextBox("Address.ZipCode") %><br /> Sate: <select id="Address.State"></select><br /> Country: <select id="Address.Country"></select><br /> </form>
我能够更新学校实例和学校的地址成员。这是相当不错的!感谢 ASP.NET MVC 团队!
但是,如何使用 jQuery 选择下拉列表以便我可以预先填充它?我意识到我可以在服务器端执行此操作,但页面上还会有其他影响列表的动态元素。
以下是我到目前为止所拥有的,它不起作用,因为选择器似乎与 ID 不匹配:
$(function() { $.getJSON("/Location/GetCountryList", null, function(data) { $("#Address.Country").fillSelect(data); }); $("#Address.Country").change(function() { $.getJSON("/Location/GetRegionsForCountry", { country: $(this).val() }, function(data) { $("#Address.State").fillSelect(data); }); }); });
来自谷歌群组:
在每个特殊字符前使用两个反斜杠。 jQuery 选择器中的反斜杠转义下一个字符。但是您需要其中两个,因为反斜杠也是 JavaScript 字符串的转义字符。第一个反斜杠转义第二个反斜杠,在字符串中为您提供一个实际的反斜杠 - 然后转义 jQuery 的下一个字符。
在每个特殊字符前使用两个反斜杠。
jQuery 选择器中的反斜杠转义下一个字符。但是您需要其中两个,因为反斜杠也是 JavaScript 字符串的转义字符。第一个反斜杠转义第二个反斜杠,在字符串中为您提供一个实际的反斜杠 - 然后转义 jQuery 的下一个字符。
所以,我猜你在看
$(function() { $.getJSON("/Location/GetCountryList", null, function(data) { $("#Address\\.Country").fillSelect(data); }); $("#Address\\.Country").change(function() { $.getJSON("/Location/GetRegionsForCountry", { country: $(this).val() }, function(data) { $("#Address\\.State").fillSelect(data); }); }); });
另请查看如何通过具有 CSS 表示法中使用的字符的 ID 选择元素?关于 jQuery 常见问题解答。