【问题标题】:Asp.Net MVC Model with related drop downs带有相关下拉菜单的 Asp.Net MVC 模型
【发布时间】:2011-01-26 07:27:15
【问题描述】:

我正在我的 C# Asp.Net MVC 应用程序中构建一个屏幕,其中有一些相关的下拉菜单。因此,例如,我选择“类别”,然后第二个下拉菜单应显示所有相关子类别选择的类别。

那么,模型是否会包含一个列表,用于构建类别下拉列表,然后是一个列表,最初为空。在选择类别时,我需要回帖,如果选择的类别则传回 id,然后填充 List Sub Categories... 然后构建 Sub Category 下拉列表?

希望有人可以协助设计我的模型。对于正在编辑的项目,该模型还将具有相当多的与列表无关的数据。而且我认为该模型还需要一个“CategorySelectedId”,以便我知道选择了什么?

【问题讨论】:

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


    【解决方案1】:

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

    更新

    JSON 返回动作的模型可以是匿名类型,也可以是IEnumerableSelectListItem。使用Linq: `mycollection.select(item=> 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;}
    }
    

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

    【讨论】:

    • Thnaks @Gidon - 模型会是什么样子?
    • Thnaks @Gidon - 我需要模型也有用于 drop mdown 的 vlues,对吗?也就是说,要填充下拉列表的项目及其值的列表?
    • 对于第一个下拉菜单,是的,您可以。我已将其添加到模型中。
    • 谢谢。在标记中,您会使用 foreach 从 MainCats 构建项目吗?我一直在这样做,但后来被告知我不应该在我的视图中使用 foreach...
    • 你的问题有两个部分。我应该如何显示 maincats 下拉列表:在这种情况下,最简单的是使用 Html.DropDownListFor(m=>m.MainCatID, Model.MainCats)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2014-09-20
    相关资源
    最近更新 更多