我的Telerik Kendo MVC UI代码出现问题。我的代码看起来很棒,但是当我把'.CascadeFrom'属性放在组合框上时它会停止正确加载。这似乎与以下事实有关:当我插入javascript函数的定义时,它似乎没有注册。我在
中收到以下消息web开发者控制台:
[08:19:25.006] ReferenceError: getCountyVal is not defined in /Employer/Details/1
我认为我已将问题与我使用.CascadeFrom属性或javascript函数的情况隔离开来;当我不需要javascript调用或JSON返回服务器端代码中的输入变量时,我肯定能够加载。
前端代码: (2个组合框,.cshtml文件中的局部视图)
<td>
<p>
@(Html.Kendo().ComboBox()
.Name("countyselector")
.Placeholder("Select County....")
.DataTextField("NameStr")
.DataValueField("CountyTypeID")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("getCountyTypes", "Employer");
});
}
)
//.Events(e => { e.Select("onCountySelectorSelect"); })
)
</p>
</td>
<td>
<p>
@(Html.Kendo().ComboBox()
.Name("countycityselector")
.Placeholder("Select City / Area...")
.DataTextField("NameStr")
.DataValueField("CountyCityTypeID")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("getCityAreas", "Employer")
.Data("getCountyVal");
}).ServerFiltering(true);
}
)
.Enable(false)
.AutoBind(false)
.CascadeFrom("countyselector")
)
<script type="text/javascript">
function getCountyVal() {
return $("#countyselector").val();
}
</script>
控制器代码:
public JsonResult getCityAreas(int CountySel)
{
// Return a set of CountyCityAreaTypeID's and their associated names based on a countyID.
//return Json(db.vw_CountyCities.Where(x => x.CountyTypeId == Convert.ToInt16(CurrCountyValue))
// .Select(i => new { i.CountyCityAreatypeId, i.NameStr }), JsonRequestBehavior.AllowGet);
var retval = Json(db.vw_CountyCities
.Select(i => new { i.CountyCityAreatypeId, i.NameStr }), JsonRequestBehavior.AllowGet);
return retval;
}
public JsonResult getCountyTypes()
{
return Json(db.CountyTypes.Select(i => new { i.CountyTypeId, i.NameStr }), JsonRequestBehavior.AllowGet);
}
答案 0 :(得分:1)
请将下面的代码段放在其他代码/标记的开头。
<强> JS 强>
<script type="text/javascript">
function getCountyVal() {
return {
CountySel: $("#countyselector").data("kendoComboBox").input.val()
};
}
</script>
OR
<script type="text/javascript">
function getCountyVal() {
return {
CountySel: $("#countyselector").val()
};
}
</script>