通过Ajax.ActionLink传递用户输入并设置url参数
那么,我只想传递用户输入而不使用显式的jQuery ajax方法。我的想法是以下几点:试图用Ajax.ActionLink并为AJAX必要参数之前Ajax的本身:通过Ajax.ActionLink传递用户输入并设置url参数
@Ajax.ActionLink("Call date", "CallingHistory", "Member", new {sortOrder = ViewBag.DateSortParam, pageNumber = ViewBag.PageNumber}, new AjaxOptions {UpdateTargetId = "historytable", HttpMethod = "get", OnBegin = "SetUrlParameters"}, new {id = "calldatetimelink"})
,并设立行动网址参数的js代码:
<script>
function setUrlParameters() {
var k = 0;
this.href = this.href + "?includedialling=" + $("#chBox1").val();
this.href = this.href + "?includeincomingmissedcalls=" + $("#chBox2").val();
this.href = this.href + "?includeoutcomingmissedcalls=" + $("#chBox3").val();
}
</script>
操作方法签名看起来像这样:
public Task<ActionResult> CallingHistory(string sortOrder, int pageNumber, bool? includedialling,
bool? includeincomingmissedcalls, bool? includeoutcomingmissedcalls){...}
注意,JS-方法之前Ajax的请求来执行。有可能这样做吗?我一直想把断点设置为js-method,但在chrome web-tools中看不到它。提前致谢。
UPDATE: 叶先生,觉得这应该工作,但是我改变的参数脚本事业无限的方式加:
function setUrlParameters(data) {
var oldref = data.href;
var par1 = '&includedialling=' + $("#chBox1").is(":checked");
var par2 = '&includeincomingmissedcalls=' + $("#chBox2").is(":checked");
var par3 = '&includeoutcomingmissedcalls=' + $("#chBox3").is(":checked");
var arr = data.href.split('&');
var resultUrl = arr[0] + arr[1] + par1 + par2 + par3;
$("#calldatetimelink").href = resultUrl;
}
,并得到连接错误在Chrome网上应用工具:
GET localhost:50307/Views/Shared/Partial/Member/CallingHistory.cshtml?X-Requested-With = XMLHttpRequest & _ = 1409287722659 404(Not Found)
在调试器脚本显示resultUrl变量的这样的值:
//本地主机:50307 /会员/ CallingHistory中将sortOrder = datepageNumber = 1个& includedialling =假& includeincomingmissedcalls =真& includeoutcomingmissedcalls =假。 - 一切都很好。但最终我还没有得到结果。这个字符串'X-Requested-With = XMLHttpRequest & _ = 1409287722659'从哪里出现?显然,这是浏览器的行为。
Yes..In你的问题,你在呼唤setUrlParameters
以正确的方式,但使用的是this
内setUrlParameters
功能,你没有提供它做的却是这样的:
@Ajax.ActionLink("Call date", "CallingHistory", "Member", new {sortOrder =
ViewBag.DateSortParam, pageNumber = ViewBag.PageNumber}, new AjaxOptions
{UpdateTargetId = "historytable", HttpMethod = "get", OnBegin =
"SetUrlParameters(this)"}, new {id = "calldatetimelink"})
<script>
function setUrlParameters(data) {
var link;
link = data.href + "&includedialling=" + $("#chBox1").is(':checked') + "&includeincomingmissedcalls=" + $("#chBox2").is(':checked') + "&includeoutcomingmissedcalls=" + $("#chBox3").is(':checked');
$("#calldatetimelink").attr('href',link)
}
</script>
和不忘记在您的页面或布局页面中包含'jquery.unobtrusive-ajax.min.js'
文件。
谢谢,例外。我只是jquery的新手。 – Ryan 2014-08-28 09:38:39
@ Rayan..problem解决.. ??? – 2014-08-28 10:11:36
OnBegin js函数被触发,我看到url参数已设置,但在服务器端方法获取空值。 – Ryan 2014-08-29 02:39:15