C# MVC3 DropDownList-修改在所选索引上以表单形式显示的数据是否已更改?

C# MVC3 DropDownList-修改在所选索引上以表单形式显示的数据是否已更改?,c#,jquery,asp.net-mvc,asp.net-mvc-3,C#,Jquery,Asp.net Mvc,Asp.net Mvc 3,我的模型中有两个DropDownList元素 [DisplayName("Site")] public List<KeyValuePair<int, string>> Site { get; set; } public int SelectedSiteID { get; set; } <%= Html.DropDownListFor(model => model.SelectedSiteID, new SelectList(Model.Site, "Key",

我的模型中有两个DropDownList元素

[DisplayName("Site")]
public List<KeyValuePair<int, string>> Site { get; set; }
public int SelectedSiteID { get; set; }
<%= Html.DropDownListFor(model => model.SelectedSiteID, new SelectList(Model.Site, "Key", "Value"))%>

[DisplayName("Data Center")]
public List<KeyValuePair<int, string>> DataCenter { get; set; }
public int SelectedDataCenterID { get; set; }
<%= Html.DropDownListFor(model => model.SelectedDataCenterID, new SelectList(Model.DataCenter, "Key", "Value"))%>
[DisplayName(“站点”)]
公共列表站点{get;set;}
public int SelectedSiteID{get;set;}
model.SelectedSiteID,新选择列表(model.Site,“键”,“值”))%>
[显示名称(“数据中心”)]
公共列表数据中心{get;set;}
public int SelectedDataCenterID{get;set;}
model.SelectedDataCenterID,新建SelectList(model.DataCenter,“键”,“值”))%>
当用户更改第一个下拉列表的选择时,我试图修改第二个下拉列表中的ListItem集合

我认为这可以通过以下方式实现,但我想确认这是一种良好的做法:

  • 使用jQuery,绑定到第一个DropDownList的更改事件
  • 响应更改事件时——使用新选择的值向服务器发送AJAX请求
  • 服务器将用JSON响应,JSON表示第二个DropDownList的ListItem对象集合
  • 使用jQuery,我修改了第二个DropDownList的选择,使其包含返回的JSON元素

这一切似乎有点。。。非MVC3y,如果您愿意的话。这是实现我的要求的标准方法,还是有更明确的方法?

我认为在这种情况下最好使用Jquery

最好的方法是将第一个下拉框绑定到Jquery中的OnChange事件,然后使用$.ajax将数据从JSONresult加载到控制器中。加载数据后,将数据加载到Second下拉列表中


如果您需要一些代码帮助,请告诉我。

我使用jQuery Cascade Select插件来完成这项工作。它很容易插入,并且不需要你重新发明轮子

是的,你说得对。这可能是最好的方法。我不同意这不是MVC的做事方式。视图将为您提供一个控件->您将其传递给控制器->更改模型->渲染新视图。在我看来像MVC。