2014-10-07 83 views
0

我想有一個下拉列表填充不同值取決於用戶選擇的國家。閱讀ASP.net mvc下拉列表中.cshtml

在我的.cshtml文件中,我們通過結合一個枚舉

@helper DropDownField(string binding, Type enumType) 
    { 
     <!-- ko with : @(binding) --> 
     <div class="control-group" data-bind="css: { error: isInvalid }"> 
     <label class="control-label" for="@binding" data-bind="text: title">replace me</label> 
     <div class="controls"> 
     <select id="@binding" name="@binding" data-bind="value: value"> 
      @{Dictionary<string, string> enumValues; } 
       enumValues = EnumExtensionMethods.GetNameAndFriendlyNameDictionary(enumType); 


      @foreach (KeyValuePair<string, string> kvp in enumValues) 
       { 
       @:<option value="@kvp.Key">@(!String.IsNullOrWhiteSpace(kvp.Value) ? kvp.Value : "&nbsp;")</option> 
      } 
     </select> 
     <span class="help-inline" data-bind="text: errorMessage"></span> 
    </div> 
</div> 
<!-- /ko --> 
} 

然後我將代碼顯示取決於所選哪個國家相應的列表中進行的下拉列表。當然這不起作用。我不確定我可以用來檢查國家價值的語法。

@DropDownField("country")         
    if ($('#country').val() == "US") { 
     @DropDownField("state", typeof(StateType))       
    } else { 
     @DropDownField("state", typeof(ProvinceTypeCA)) 
    } 

回答

0

也許做一個JS撥弄下一次......

你的代碼看起來複雜,一丁點(我沒有太多的<風扇 - !KO)如果我是做一個下拉式,它的值是通過一個國家選擇的,我會製作一系列國家(顯然),然後我會讓你的第二個下拉爲可計算的。該計算會存儲一個二維數組,一邊是針對國家的數據,另一邊是數據,即

[{「Australia」,「gday mate」},{「Australia」,「more dropdown stuff! !「},{」美國「,」你好夥伴「},{」巴黎「,」長棍棒都很不錯「}]

然後你根據當時選擇的國家來計算篩選結果。

然後當一個國家被選中時,您的計算機會更新(因爲在第二個下拉菜單的啓用區域中,您會將該國家設爲啓用狀態,因此在沒有選擇國家時會禁用),因此您需要日期下拉列表

或者只是跟着教程這裏,他們告訴你如何;) http://ryanrahlf.com/building-cascading-dropdowns-with-knockout-js/ --- http://ryanrahlf.com/building-cascading-dropdowns-with-knockout-js-part-2-working-with-flat-data/

不太清楚他們是如何好,因爲我沒有帶做了他們,但我的眼睛他們揉成團他們看起來很對

+0

另外,如果你有一個pluralsight訂閱結帳http://www.pluralsight.com/courses/knockout-tips第6輪:馬努拉訂閱 - >汽車演示 – 2014-10-07 20:37:00