2011-01-26 81 views
1

我在我的C#Asp.Net MVC應用程序,其中有幾個相關的下拉建設屏幕。因此,例如,我選擇'類別',然後第二滴應該顯示所選類別的所有相關子類別。Asp.Net MVC模型與相關的下拉

因此,模型是否會包含一個List,用於構建Category下拉列表,然後是List,最初爲空。在類別的選擇上,我需要做回傳,如果選擇的類別傳回ID,然後填充名單<>子類別...,然後建立子類別下拉菜單?

希望有人可以協助我的模型的設計。該模型還會爲正在編輯的項目提供不少與列表無關的數據。我認爲該模型還需要一個'CategorySelectedId',以便我知道選擇了什麼?

回答

1

最好的方法是使用AJAX來做到這一點。您必須將change事件掛接到您的第一個選擇框,一旦更改,您將執行一個AJAX請求,並將所選值輸入Action。該操作將返回一個JSON列表,該列表將被解析並放入下一個select box

更新

的JSON返回動作可以匿名類型真的,還是SelectListItem一個IEnumerable模型。使用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;} 
} 

當然你可以添加驗證屬性等

+0

Thnaks @Gidon點 - 什麼模型會是什麼樣子? – Craig 2011-01-26 07:33:40