在我的代码中,当用户按下提交按钮时,它将向控制器执行AJAX请求。
一切正常,但是,我还想更新浏览器网址以包含完整的查询字符串(例如http://localhost/Forecast?BillingToes=123&Year=2016)。
Controller正在返回带有模型的局部视图。使用查询字符串添加包含完整URL的其他属性似乎没问题。但是,它看起来很尴尬。
所以我的问题是,有没有办法在OnComplete之后通过JavaScript检索完整的URL?以下是我的观点:
@using (Ajax.BeginForm("UpdateForecast", null, new AjaxOptions
{
HttpMethod = "Post",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "forecastControlPart",
LoadingElementId = "ajaxSpinnerImage",
OnBegin = "DeactivateForm",
OnSuccess = "initAppendHeader();UpdateURL(xhr)",
OnComplete = "ReloadFiltersBehaviour"
}, new
{
@class = "onChangeForm",
data_currencyurl = @Url.Action("GetCurrencyForBilling", "DataSource"),
}))
答案 0 :(得分:0)
我找到了问题的解决方案,使用$(form).serialize()可以获取表单提交给服务器的所有参数,所以我的代码看起来像:
在我的观点中:
@using (Ajax.BeginForm("UpdateForecast", null, new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, OnSuccess = "initAppendHeader(),UpdateURL(this)", }))
在我的Javascript文件中:
function UpdateURL(form) { // Auto-Update browser URL to include parameters after submit. var formData = $(form).serialize(); window.history.pushState(null, null, formData); }