具有相关下拉的Asp.Net MVC模型

时间:2011-01-26 07:27:15

标签: c# asp.net-mvc drop-down-menu

我正在我的C#Asp.Net MVC应用程序中构建一个屏幕,它有一些相关的下拉。例如,我选择'Category',然后第二个下拉列表应该显示所有相关的子类别选定的类别。

那么,模型是否包含List,用于构建Category下拉,然后是List,最初为空。在选择类别时,我需要回复一个帖子,如果选择了类别,则返回id,然后填充List<>子类别...然后构建子类别下拉?

希望有人可以协助我的模型设计。该模型还将为正在编辑的项目提供相当多的非列表相关数据。我认为该模型还需要一个'CategorySelectedId',以便我知道选择了什么?

1 个答案:

答案 0 :(得分:1)

最好的方法是使用AJAX。您必须将change事件挂钩到第一个选择框,一旦更改,您将使用所选值对某些Action执行AJAX请求。该操作将返回一个JSON列表,该列表将被解析并放入下一个select box

<强>更新

JSON返回操作的模型可以是真正的匿名类型,也可以是IEnumerable SelectListItem。使用Linq:`mycollection.select(item =&gt; new SelectListItem(){Name = item.Name,Value = item.ID.ToString()});

如果我们假设页面如下所示:

<form>
   <select id="MainCat" name="MainCatID">
      <option value="1">First option</option>
      <option value="2">First option</option>
      <option value="3">First option</option>
   </select>

   <select id="SubCat" name="SubCatID" disabled="disabled">
      <option value=""> -- Please select a main category -- </option>
   </select>
</form>

您的模型看起来像:

public class MyModel {
    public int MainCatID {get;set;}
    public int SubCatID {get;set;}
    public IEnumerable<SelectListItem> MainCats {get;set;}
}

当然你可以添加验证属性等。