页面刷新时动态链接下拉

我有以下情况。 我有2次下降。 第一个中的选项加载到document.ready上。 当用户在第一个下拉列表中进行选择时,将加载第二个选项。 我正在使用jQuery填充两者,一切都很好用。

这些下拉列表存在于通过GET提交的表单中,同一页面作为ActionResult返回。 所以这是我的问题,一旦表单提交,我需要下拉来维护它们的值以及填充相应的选项列表。

到目前为止,我的想法是解析查询参数并以这种方式设置值。 我不知道如何重新填充第二个下拉列表。

注意这是一个简化的例子,我实际上有一大堆下拉链接到几个级别,所以我需要一个通用的解决方案。

完成此操作后,每次调用操作时,都需要重建模型中的值列表。 然后,您的模型还会存储所选的值,该值会自动保留。

这是一个地址控件的例子,我有一个状态下拉列表。

首先,我的模型

public class AddressModel { [Required(ErrorMessage = "Address is required")] [DisplayName("Address Line 1")] public string Address1 { get; set; } [DisplayName("Address Line 2")] public string Address2 { get; set; } [Required(ErrorMessage = "City is required")] [DisplayName("City")] public string City { get; set; } [Required(ErrorMessage = "State is required")] [DisplayName("State")] public string State { get; set; } [Required(ErrorMessage = "Zip code is required")] [DisplayName("Zip Code")] [StringLength(5, ErrorMessage = "{0} must be five digits.")] [RegularExpression(@"\d{5}", ErrorMessage = "{0} must be five digits.")] public string ZipCode { get; set; } public Dictionary States { get; set; } public SelectList StatesSelectList { get { return new SelectList(States, "Value", "Key"); } } } 

以下是我的行动,除了重要的部分外,其余部分都省略了

 public ActionResult DoSomething() { var model = new AddressModel() { States = GetStateList(); }; return View(model); } [HttpPost] public ActionResult DoSomething(AddressModel model) { if (ModelState.IsValid) { //do stuff here } model.States = GetStateList(); return View(model); } 

以下是我的看法

 <%: Html.LabelFor(x => x.State)%> <%: Html.DropDownListFor(x => x.State, Model.StatesSelectList)%> <%: Html.ValidationMessageFor(x => x.State)%> 

因为属性AddressModel.State绑定到控件,所以每次调用post操作时都会保留其值。