2016-08-18 107 views
0

我一直在這工作了一段時間,我知道如何解決它使用JQuery,但我需要解決這個只是使用服務器端代碼,我在Razor View 事情是:顯示列表後選擇DropDownList值Razor

我有一個@Html.DropDownlist顯示美國的一些國家,並且一旦點擊DropDownList的國家之一,然後我想顯示一些城市屬於使用其他DropDownList選擇的國家,我不是確定如何使用Razor syntax從選定字段獲取值,然後在選擇一個州時顯示屬於其他DropDownList中的州的城市,我使用SelectList並且我有​​要綁定城市......我展示了DropDownList中的所有國家正在工作。 這裏是我的代碼:

這些只是兩個班,我使用,以填補一些屬性的SelectList:

public States(int id, string name, List<string> list) 
     { 
      StateID = id; 
      Name = name; 
      Cities = list; 
     } 
     public int StateID { get; set; } 
     public string Name { get; set; } 
     public List<string> Cities { get; set; } 
    } 


    public static class Fill 
    { 
     public static List<States> GiveMeStates() 
     { 
      List<States> li = new List<States>() { 
      new States(1, "Alabama",new List<string> {"Adamsville", "Addison", "Anderson","Anniston", "Arab" }), 
      new States(2,"Alaska", new List<string> {"Anchorage","Juneau","Fairbanks","Sitka"}), 
      new States(3,"Arizona", new List<string> { "Avondale", "Benson", "Besbee"}) 
      }; 
      return li; 
     } 
    } 

而現在這是我的Razor視圖:

@using RazorMVC.Models; 

@{ 
    List<States> aux = Fill.GiveMeStates(); 
    SelectList states = new SelectList(aux, "StateID", "Name"); 
} 
<form> 
    @Html.DropDownList("ddlStates", states); 

</form> 
+1

您需要張貼您的表單到一個方法,重定向到另一種方法,顯示基於選定狀態的城市(並將選定狀態的值傳遞給該方法) –

+1

爲什麼你不要不想使用'JQuery'?我認爲綁定多級'下拉式'JQuery是不錯的選擇,沒有任何回傳到頁面! –

+0

@StephenMuecke謝謝你的想法,我明白你的意思,但是如何發佈我的表單,從下拉列表中選擇一個元素並且不需要提交按鈕?這可能沒有使用提交按鈕?我不知道如何做到這一點,只是使用C#和剃刀語法,再次感謝:) – AlexGH

回答

1

如果您絕對不想使用javascript/jQuery,則可以提交表單(使用選定的狀態ID),並根據發佈的狀態ID獲取狀態並顯示該狀態。

假設您想在同一視圖中顯示所選狀態的城市。

@{ 

    var stateId = Request.QueryString["ddlStates"] as string; 
    List<States> aux = Fill.GiveMeStates(); 
    SelectList states = new SelectList(aux, "StateID", "Name"); 
    List<SelectListItem> cities = new List<SelectListItem>(); 
    if (!String.IsNullOrEmpty(stateId)) 
    {  
    var state = aux.FirstOrDefault(f => f.StateID == Convert.ToInt32(stateId)); 
    if (state != null) 
    { 
     cities = state.Cities 
         .Select(x => new SelectListItem {Value = x, Text = x}).ToList(); 
    } 
    } 
} 
<label>Select a state and hit submit </label> 
@using (Html.BeginForm("Index", "Home", FormMethod.Get)) 
{ 
    @Html.DropDownList("ddlStates", states) 
    <label>Cities < /label> 
    @Html.DropDownList("City", cities) 
    <input type="submit" /> 
} 

我個人更喜歡在剃鬚刀視圖中不放置很多C#代碼。我通常創建一個視圖模型並使用它來傳遞視圖中所需的值。因此,您在視圖中看到的大部分代碼都在我的操作方法中。如果您更喜歡使用jQuery/javascript(爲什麼不?),您可以聽第一個下拉列表的更改事件,獲取選定的選項值並通過ajax調用將其發送到服務器。讓您的服務器操作方法以json格式返回狀態,並且您的ajax metod的回調可以解析json數據並更新城市下拉列表。這是一個sample開始