【发布时间】:2014-11-24 13:54:43
【问题描述】:
我有一个带有链接Search?params 的搜索页面,但任何后续搜索请求都是使用Asp.Net 通过Ajax 表单发出的。它向具有不同名称的操作发出请求,例如InstantSearch?params,但在浏览器中我看到Search?params。
从这个页面我有一个到另一个页面的链接,我需要保存 URL 才能返回到这个页面。
但如果我有一个 AJAX 请求,Request.Url 返回InstantSearch?params,而不是浏览器地址栏中的链接。而且这个链接的动作只返回一个部分视图,所以当它返回到上一个 URL 时,页面就乱了。
如何从 Asp.Net 的浏览器地址栏中获取上一页的链接,而不是实际最后请求的 URL?
在搜索时,我们正在加载这样的砌体容器:
$("#main-content-container").load("/Kit/InstantSearch?" + parameters, function() {
$('#mason-container').imagesLoaded(function() {
$('#mason-container').masonry({
itemSelector: '.kit-thumb-container',
columnWidth: 210,
isFitWidth: true,
gutter: 10
});
});
});
然后我在同一页面上调用基础 Joyride 并且需要传递当前页面 URL 以返回。 Joyride在这个链接下调用页面的onload:
@Html.ActionLink("Go to kit details help", "OrderPageHelp", "Kit", new { returnUrl = Request.Url }, new { @style = "font-size:16px;" })
所需的页面返回 URL 是 Kit/Search?params,但 Request.Url 在使用 Kit/InstantSearch?params 加载砌体时返回最后一个请求。
如何在不进行硬编码的情况下传递所需的 Url?
【问题讨论】:
-
您需要展示您尝试过的代码/HTML 等。你想要什么的描述不清楚。
-
其实我差不多找到了解决办法。我有这样的动作: Html.ActionLink("Go to help", "PageHelpAction", "HelpController", new { returnUrl = Request.Url }, new { @style = "font-size:16px;" }) Request.Url返回错误的 url(来自上次 AJAX 请求),但 JavaScript 的 location.pathname 返回所需的结果。我可以将该 JS 变量作为参数传递给 Html.ActionLink 吗?
-
不。您不能像这样将客户端值传递到页面中。同样,您需要澄清您的问题并显示代码,以避免进一步的反对票。
-
我用一些代码编辑了顶帖。
标签: asp.net-mvc-4 razor views