1)当用户选择第一个下拉列表时,您可以使用 jQuery ajax 获取第二个下拉列表的项目。
假设您的 Category 类看起来像这样
public class Category
{
public ID { set;get;}
public string Name { set;get;}
}
视图中的下拉菜单是这样的
@Html.DropDownListFor(x => x.SelectedCategoryID,
new SelectList(Model.Categories, "ID", "Name"), "Select")
@Html.DropDownListFor(x => x.SelectedSubCategoryID,
new SelectList(Model.SubCategories, "ID", "Name"), "Select")
JSON
现在有一些 javascript 来监听第一个下拉列表的更改事件并获取值,对接受类别 ID 的操作方法进行 ajax 调用,并以格式返回子类别列表。
<script type="text/javascript">
$(function () {
$("#SelectedCategoryID").change(function () {
var self = $(this);
var items="";
$.getJSON("@Url.Action("Index", "GetSubCategories")?id="+self.val(),
function(data){
$.each(data,function(index,item){
items+="<option value='"+item.ID+"'>"+item.Name+"</option>";
});
$("#SelectedSubCategoryID").html(items);
});
});
});
</script>
现在您应该有一个操作方法,它以格式GetSubCategories
返回(子)类别列表JSON
public ActionResult GetSubCategories(int id)
{
List<Category> subCategoryList=new List<Category>();
//to do : fill the list of (sub) categories to the
// above list for the category id passed to this method.
return Json(subCategoryList,Json.RequestBehaviour.AllowGet);
}
2)会话应该是好的。