jquery 重定向后在 asp.net mvc 中查找引用页面
我正在使用 jquery 伪造自动回发,因为我使用的是 asp.net mvc。 它在选择列表(下拉列表)中执行,如下所示:
$(document).ready(function() {
// autopostback for character drop down list
$('#playerCharacters').change(function() {
var charId = $('#playerCharacters option:selected').val();
window.location = "/Character/SetDefault/" + charId;
});
});
现在在 /Character/SetDefault/[charID] (控制器、操作、ID)中,我尝试使用以下方式访问引用 URL:
Request.UrlReferrer
但它出现为空。 关于为什么会这样的任何想法吗?
I am faking an autopostback using jquery since I am using asp.net mvc. It's being performed in a select list (dropdownlist) like this:
$(document).ready(function() {
// autopostback for character drop down list
$('#playerCharacters').change(function() {
var charId = $('#playerCharacters option:selected').val();
window.location = "/Character/SetDefault/" + charId;
});
});
Now in /Character/SetDefault/[charID] (controller, action, ID) I am trying to access the referring URL using this:
Request.UrlReferrer
But it's coming up null. Any ideas on why that is?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为浏览器处理直接设置 window.location 的方式与处理用户直接在地址栏中输入新 URL 的方式相同。 这意味着没有引荐来源网址,因为引荐来源网址是关于一个页面直接引用另一个页面(例如通过链接)而不是浏览器只是转到另一个页面...
我能看到解决您的问题的最简单方法是确保您的下降下拉列表采用发布(或获取)到 /Character/SetDefault & 的形式。 然后让您的 javascript 提交如下所示的表单:
然后,您只需更改控制器中的 SetDefault 操作即可拥有playerCharacters 参数,以便 MVC 将表单的请求值正确绑定到您的方法。
I think setting the window.location directly is treated by the browser the same as it would treat the user directly entering a new URL into the location bar. This means that there's no referrer since referrers are about one page directly referring to another, (eg. via a link) not the browser just going to another page...
Easiest way I can see to solve your issue is to make sure your drop down list is in a form that posts (or gets) to /Character/SetDefault & then make your javascript submit the form like this:
You'll then just need to change your SetDefault action in your controller to have a playerCharacters parameter so that the MVC will bind the form's request value to your method properly.