我正在我的C#Asp.Net MVC应用程序中构建一个屏幕,它有一些相关的下拉。例如,我选择'Category',然后第二个下拉列表应该显示所有相关的子类别选定的类别。
那么,模型是否包含List,用于构建Category下拉,然后是List,最初为空。在选择类别时,我需要回复一个帖子,如果选择了类别,则返回id,然后填充List<>子类别...然后构建子类别下拉?
希望有人可以协助我的模型设计。该模型还将为正在编辑的项目提供相当多的非列表相关数据。我认为该模型还需要一个'CategorySelectedId',以便我知道选择了什么?
答案 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;}
}
当然你可以添加验证属性等。