嗯......你以前见过这个问题......认为这很容易。
我有: VS 2013 Pro MVC 5.2.2 剃刀3.2.2 Bootstrap 3.2.0 JQuery 2.1.1 jQuery UI 1.11.1 MS jQuery Unobtrusive Ajax 3.2.2 Modernizer 2.8.3 回应1.4.2
和Kendo MVC v2014.2.716 - 但不应该重要,因为我只是试图影响标签。
我有一个显示许多字段的视图,但有问题的标签是局部视图。我知道,我知道 - "为什么你使用局部视图?!?!" - 没关系,其他一切都有效。如果您能证明为什么我想要做的事情会因为使用局部视图而失败,那么我会改变它。
我要做的就是用jQuery更新标签的文本
在加载局部视图的视图中:
@{ var vddAddress = new ViewDataDictionary(ViewData) { TemplateInfo = new TemplateInfo() { HtmlFieldPrefix = "Address" } };}
@Html.Partial("_AddressPartial", Model.Address, @vddAddress)
ok - 在我的局部视图中,我显示了一个地址:
在所有领域中,重要的两个是:
<div class="row">
@Html.LabelFor(model => model.State, new { @class = "control-label col-sm-2 col-md-2 col-lg-2", id = "lbl_Address_State" })
<div class="col-sm-4 col-md-4 col-lg-4">
@(Html.Kendo().ComboBoxFor(model => model.State)
.Placeholder("Select Province...")
.DataTextField("Text")
.DataValueField("Text")
.Suggest(true)
.BindTo(Model.Provinces)
.HtmlAttributes(new { style = "width:100%" })
)
@Html.ValidationMessageFor(model => model.State)
</div>
</div>
<div class="row">
@Html.LabelFor(model => model.MailCode, new { @class = "control-label col-sm-2 col-md-2 col-lg-2", id = "lbl_Address_MailCode" })
<div class="col-sm-4 col-md-4 col-lg-4">
@(Html.Kendo().ComboBoxFor(model => model.MailCode)
.Placeholder("Select Postal...")
.DataTextField("Text")
.DataValueField("Text")
.Suggest(true)
.BindTo(Model.MailCodes)
)
@Html.ValidationMessageFor(model => model.MailCode)
</div>
</div>
首次显示时,标签会显示:
省/州
当我的地理信息加载并且我的国家剑道组合框是数据绑定时,数据绑定事件将触发,并且在该javascript函数中,我尝试设置标签文本。
a la:
<script type="text/javascript">
function onCountryDataBound() {
var ddlCountry = $("#Address_Country").data("kendoComboBox");
if (ddlCountry.selectedIndex == 1) {
$('#lbl_Address_State').val("Province");
$('#lbl_Address_MailCode').val("Postal Code");
} else {
$('#lbl_Address_State').val("State");
$('#lbl_Address_MailCode').val("Zip");
}
};
我在调试中跟进...
selectedIndex = -1所以在调用之后: $(&#39;#lbl_Address_State&#39)。VAL(&#34;状态&#34);
我明白了......
$('#lbl_Address_State')[0].innerHTML "Province/State" String
$('#lbl_Address_State').val() "State" String
$('#lbl_Address_State') {...} Object, (n)
__proto__ {...} Object, (n)
context {...} [Object, HTMLDocument]
length 1 Number
selector "#lbl_Address_State" String
[0] {...} [Object, HTMLLabelElement]
看到将在网页上显示的innerHtml仍然是&#34;省/州&#34;
注意这是在$(document).ready(function(){
之前所以...好奇......当文件准备就绪时,我打电话给:
$(document).ready(function () {
var ddlCountry = $("#Address_Country").data("kendoComboBox");
if (ddlCountry.selectedIndex == 1) {
$('#lbl_Address_State').val("Province");
$('#lbl_Address_MailCode').val("Postal Code");
} else {
$('#lbl_Address_State').val("State");
$('#lbl_Address_MailCode').val("Zip");
}
});
好吧,通过调试显示没有任何变化......
$('#lbl_Address_State').val() "State" String
和
$('#lbl_Address_State')[0].innerHTML "Province/State" String
两者仍然相同......
因此页面继续加载,原始模型显示文本仍在那里......
知道如何影响标签文字的更改吗?