Проблема currentUrl
определена как переменная на стороне клиента в этой строке:
var currentUrl = window.location.href;
Обратите внимание, что @Url.Action()
помощник выполняется на стороне сервера, вы не можете использовать currentUrl
переменную на стороне клиентавнутри него как параметр действия (он не существует как переменная на стороне сервера).Вам нужно использовать строку запроса, подобную этой, чтобы перенаправить в GetData
метод действия:
if (response != null && response.success) {
alert("Success");
// use query string here
window.location = '@Url.Action("GetData", "MyController")?urlVar=' + currentUrl;
}
Если вы хотите получить URL-адрес со стороны сервера, измените ваш помощник Url.Action
, включив либо Request.Url
,Request.RawUrl
или Request.Url.AbsoluteUri
:
// alternative 1
window.location = '@Url.Action("GetData", "MyController", new { urlVar = Request.Url.AbsoluteUri })';
// alternative 2
window.location = '@Url.Action("GetData", "MyController", new { urlVar = Request.Url.ToString() })';
Обновление:
Для нескольких параметров можно использовать любой из параметров строки запроса:
window.location = '@Url.Action("GetData", "MyController")?urlVar=' + currentUrl + '&width=' + varwidthvalue + '&height=' + varheightvalue;
Или, если varwidthvalue
и varheightvalue
являются переменными на стороне сервера, просто используйте эту:
window.location = '@Url.Action("GetData", "MyController", new { urlVar = Request.Url.ToString(), width = varwidthvalue, height = varheightvalue })';