如何预填充下拉菜单

时间:2015-05-19 15:02:47

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

我有一个下拉列表,它是从GetJSON调用填充的,如下所示

查看

@{
   var NoticeFilter =(X.Models.Y.Z.NoticesEntity) ViewData["NoticeFilter"];
}


<div class="form-group">
    <label>Field Office</label>
    <select  data-bind="options: FieldOffice, value: selectedFieldOffice, optionsCaption:'Choose...', optionsValue:'FieldOfficeID', optionsText:'Name'">
        @if(NoticeFilter!=null)
        {
            <option value="@NoticeFilter.FieldOfficeID" selected></option>
        }
    </select>
</div>

当我指向此页面并将数据发送到 NoticeFilter 时,我希望在其他值中使用 Noticefilter 中的值预先选择下拉值。我如何实现这个

我想知道razor HTML中是否有方法可以在从KO JS进行数据绑定后将默认值设置为Drop-Down

2 个答案:

答案 0 :(得分:1)

你试过这个吗?

<script>
var str = @Html.Raw(Json.Encode(ViewData["Text"]));
</script>

答案 1 :(得分:0)

<强> WORKING 经过几次尝试,我发现这是访问我的JS中的ViewData或ViewBag的一种方法

我使用了KO JS optionsAfterRender,如下所示

查看

<select  data-bind="options: SubType, value: selectedSubType, optionsValue:'SubTypeID', optionsText:'SubTypeDescription',optionsAfterRender:function(){setOptionST(@Noticefilter .SubTypeID);}"></select>

<强> JS

在视图模型中

 self.setOptionST = function (x) {
        //here we can do whatever is intended to in my case to set the initial value in dropdown
        self.selectedSubType(x);
    };