阅读ASP.net mvc .cshtml中的下拉列表

时间:2014-10-07 20:12:55

标签: html asp.net asp.net-mvc knockout.js

我希望根据用户选择的国家/地区,使用不同的值填充下拉列表。

在我的.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))
    }

1 个答案:

答案 0 :(得分:0)

下次可能会制作一个JS小提琴......

你的代码看起来有点复杂(我不喜欢&lt;! - ko的粉丝)如果我要做一个下拉菜单,它通过一个国家/地区选择了它的值制作一系列国家(显然)然后我会让你的第二个下拉可计算。该计算将存储一个二维数组,一个用于它所在的国家,另一个用于数据,即

[{&#34; Australia&#34;,&#34; gday mate&#34;},{&#34; Australia&#34;,&#34;更多下拉菜单!!&#34;}, {&#34;美国&#34;,&#34;你好伙伴&#34;},{&#34;巴黎&#34;,&#34;法式面包非常好&#34;}]

然后根据当时选择的国家/地区制作计算过滤器结果。

然后当选择一个国家/地区时,您的计算机会更新(因为在您的第二个下拉列表的启用字段中,您可以将该国家/地区设置为启用,以便在未选择任何国家/地区时将其禁用)因此您将拥有最新的下拉列表

或者只是按照这里的教程向他们展示如何;) http://ryanrahlf.com/building-cascading-dropdowns-with-knockout-js/ --- http://ryanrahlf.com/building-cascading-dropdowns-with-knockout-js-part-2-working-with-flat-data/

不太确定它们有多好,因为我没有完成它们,但我眼睛bal他们看起来没错了