MVC razor页面jQuery触发但在页面刷新之前不填充字段

时间:2014-03-05 21:05:59

标签: jquery asp.net-mvc-5

Visual Studio 2012
MVC 5.1.1
ASP.Net Razor 3.1.1
bootstrap 3.1.1
jQuery 2.1.0
json.Net 6.0.1
Web优化1.1.3
Webgrease 1.6.0
等 - 大多数新的扩展等

我在一个剃刀局部视图中有一个带有Telerik MVC KendoUI ComboBoxFor ComboBoxes的MVC Web应用程序:

@model HTPortal.ViewModels.ClientInquiryViewModel
@using System.Web.UI.WebControls
@using Kendo.Mvc.UI

<div class="form-group">
    @Html.LabelFor(model => model.AddressState, new { @class = "control-label col-sm-2 
    col-md-2 col-lg-2" })
<div class="col-sm-5 col-md-5 col-lg-5">
    @(Html.Kendo().ComboBoxFor(model => model.AddressState)
        .Placeholder("Select Province...")
        .DataTextField("ProvinceName")
        .DataValueField("ProvinceName")
        .Suggest(true)
        .BindTo(Model.Provinces)
        )
    </div>

</div>

将数据加载到组合框中 - 一切正常。

在父剃刀页面中,在@using(Html.BeginForm())块之后,我有:

@section Scripts
{
    <script type="text/javascript">
        $(document).ready(function () {
            $.getJSON("http://smart-ip.net/geoip-json?callback=?", function (data) {
                alert(data.region);
                //$("#AddressCity").val(data.city);
                $("#AddressState").val(data.region);
                //$("#AddressCountry").val(data.countryName);
            });
        });
    </script>
}

在第一页加载时,警报会触发,我会在警报中看到我的省/州。 但是,在刷新页面后,我的名为AddressState的Combobox才会被填充。

我已经阅读了类似问题的各种其他帖子,但没有窗口加载或初始化或任何工作。

事实上,在IE和Chrome中 - 我得到的只是警告对话框 - 字段永远不会被填充。

帮助...

如何在第一次调用页面时让这个jQuery填充该字段?

1 个答案:

答案 0 :(得分:0)

我没有正确访问Kendo UI组件......

$(document).ready(function () {
    $.getJSON("http://smart-ip.net/geoip-json?callback=?", function (data) {
        $("#AddressCity").data("kendoComboBox").value(data.city);
        $("#AddressState").data("kendoComboBox").value(data.region);
        $("#AddressCountry").data("kendoComboBox").value(data.countryName);
    });
});

这有效!