我有一个index.cshtml,它加载了代理机构网格。 单击网格中的自定义按钮将打开一个窗口,并在局部视图中为选定代理商加载BillingRates网格。 我从“代理商”网格中读取了两个参数,并希望将其用于BillingRates网格的数据源参数。
做到这一点的最佳方法是什么? 我在index.cshtml上有两个隐藏的字段,用于存储从代理机构网格读取的两个参数。 javascript警报告诉我这些值正确,但是隐藏的字段虽然在那里并且它们的值被发布,但它们的出现是“未定义的”-我将字段更改为文本框而不是隐藏以证明这一点。
这是我的代码: index.cshtml上的隐藏字段(此处显示文本进行测试)
<input type="text" value="" name="pidForBillingRates" />
<input type="text" value="" name="aidForBillingRates" />
自定义按钮单击事件:
function ShowManageBillingRatesWindow_Click(e) {
e.preventDefault();
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var pid = dataItem.Provider;
var aid = dataItem.AgencyId;
$("#pidForBillingRates").val(pid);
$("#aidForBillingRates").val(aid);
alert("pidForBillingRates = " + $("#pidForBillingRates"));
alert("pidForBillingRates.val() = " +
$("#pidForBillingRates").attr('value'));
alert("aidForBillingRates.val() = " +
$("#aidForBillingRates").attr('value'));
alert("pid = " + pid + " and aid = " + aid);
$('#manageBillingRatesWindow').load('@Url.Action("AgencyBillingRateView",
"AgencyBillingRate")' + "?providerId=" + pid + "&agencyId=" + aid);
var window = $("#manageBillingRatesWindow").data("kendoWindow");
window.center().open();
}
第一个警报:
alert("pidForBillingRates = " + $("#pidForBillingRates"));
返回: {object object} 所以我知道它找到了文本框。
第二个警报:
alert("pidForBillingRates.val() = " +
$("#pidForBillingRates").attr('value'));
返回“无法读取未定义的值。”
第三个警报:
alert("aidForBillingRates.val() = " +
$("#aidForBillingRates").attr('value'));
返回“无法读取未定义的值。”
第四次警报”
alert("pid = " + pid + " and aid = " + aid);
返回正确的pid和aid值。
我尝试将隐藏字段(用于测试的文本框字段)放在index.cshtml上,然后放在BillingRates局部视图上,但仍然得到相同的未定义消息。
因此,网格不会加载任何数据,因为它没有在它使用的过滤器中检索两个必需的参数。
我该如何解决?
答案 0 :(得分:0)
我怀疑“它找到了文本框” pidForBillingRates
。哈希符号告诉jQuery搜索ID为“ pidForBillingRates”的元素。您想要的是搜索具有属性name
和属性值“ pidForBillingRates”的元素。因此$("input[name='pidForBillingRates']")
应该为您提供正确的元素。
有关jQuery中所有受支持的选择器,请参见https://api.jquery.com/category/selectors/。