我的观点中有ajax动作链接:
@Ajax.ActionLink("ShowWithFilter",
"ShowCompanyData",
null,
new { StateId = "x", CityId = "y" },
new AjaxOptions
{
HttpMethod = "GET", // HttpMethod to use, GET or POST
UpdateTargetId = "PartialView", // ID of the HTML element to update
InsertionMode = InsertionMode.Replace, // Replace the existing contents
OnBegin = "setParameters",
}, new { id = "linkFilter" }
)
我在我的页面上有下拉控件。用户可以选择下拉列表,点击上面的ajax链接后,下拉列表中的参数应该发送到控制器操作。
在我的javascrip文件中我有:
$("#linkFilter").click(function (e) {
if ($("#ddState").prop("disabled", false)) {
$('#linkFilter').attr('href', function () {
return this.href.replace('x', $('#ddState').val());
});
}
else if ($("#ddCity").prop("disabled", false)) {
return this.href.replace('y', $('#ddCity').val());
}
});
单击我要将参数添加到ajax操作链接。因此,单击事件已被识别,因此可以,但是"返回this.href.replace(' x',$(' #ddState')。val());&# 34;这行代码说"无法读取undefined"的属性替换。请帮助:/
答案 0 :(得分:1)
使用jQuery而不是@Ajax.ActionLink
来做这件事要好得多。
声明if ($("#ddState").prop("disabled", false))
没有任何意义,因为设置属性disabled
到false
并始终返回true
。由于不清楚您尝试使用此语句做什么,我假设您要将一个或另一个值发送到控制器。
将linkFilter
元素更改为按钮或其他元素(如果符合您的要求,可以将其设置为类似链接的样式)
$("#linkFilter").click(function (e) {
var url = '@Url.Action("ShowCompanyData")';
// set defaults
var stateID = null;
var cityID = null;
// set value based on disabled state of the dropdowns
if ($("#ddState").is(':disabled')) {
cityID = $("#ddState").val();
} else if ($("#ddState").is(':disabled')) {
stateID = $("#ddState").val();
}
$.get(url, {StateId: '', CityId: ''}, function (data) {
// update view
$('#PartialView').html(data);
})
});