如何在 MVC .net 中查找用户打开了新选项卡?如何区分客户端/服务器端的简单点击请求和选项卡请求?

发布于 2024-10-15 04:57:45 字数 399 浏览 1 评论 0原文

我想区分 MVC .net 中服务器端或客户端的新选项卡或新窗口请求与简单请求(即在同一选项卡中打开页面)?

实际上,我们也没有在布局页面中使用内容占位符。我们其中有 div 并在其中加载子页面。因此子 aspx 页面没有为其指定母版页。 因此,当为页面打开新选项卡时,我们的母版页不会附加到它,因此所有外观都会丢失。 现在我想识别选项卡请求@服务器端,以便发送带有布局页面的所需页面。

我尝试使用 Request.refferer 来查找母版页的存在,但 Firefox 和 IE 的绝对 URI 并不总是相同

当前情况 => 1) 简单请求:controller =>行动=>返回母版页

2) 当用户右键单击链接并打开新选项卡时生成请求: 控制器=>操作名称=>返回未附加母版页的视图

I want to differentiate between a new tab or new window request and simple request (i.e page opening in the same tab) on server or client side in MVC .net?

actually, we are nor using content placeholders in the layout page. we have div in it and child pages are loaded in it.so child aspx pages don't have Master page specified for them.
so when a new tab is opened for page, our master page is not attached to it, so all look and feel is lost.
now I want to identify a tab request @server side so as to send the required page with layout page.

I tried using Request.refferer to find the presence of master page, but the absolute URI is not always same for Firefox and IE

Current Scenario =>
1) Simple request : controller => Action => returns with Master page

2) Request generated when the user right clicks on the link and opens new tab:
controller=>ActionName => returns view without master page attached

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

猫瑾少女 2024-10-22 04:57:45

HTTP 标头字段 中包含大量信息,但无论请求是否源自不包括新窗口。根据您的问题,听起来您正在使用大量客户端代码进行内容检索和渲染 - 阿贾克斯

假设是这种情况,您最好的选择是查看非标准 HTTP 请求字段 X-Requested-With

主要用于识别Ajax请求。大多数 JavaScript 框架都会发送带有 XMLHttpRequest 值的标头

在 ASP.NET MVC 中,您可以使用 Request.IsAjaxRequest 扩展方法来戳这个字段。通过这种方式,如果在新窗口中打开链接,您可以返回整个页面 Site.Master 和所有内容。当请求是您预期的行为时,您就会知道,因为它是 Ajax 请求。

也就是说,我建议您研究渲染内容的方式,并查找有关渐进增强< /a>.

The HTTP header fields have a fair amount of information in them, but whether or not the request originated from a new window is not included. Based on your question it sounds like you are using a lot of client side code for content retrieval and rendering - Ajax.

Assuming that is the case your best bet is looking at the nonstandard HTTP request field X-Requested-With:

mainly used to identify Ajax requests. Most JavaScript frameworks send this header with value of XMLHttpRequest

In ASP.NET MVC you can use the Request.IsAjaxRequest extension method to poke at this field. In this manner if a link is opened in a new window you can return the full page Site.Master and all. When the request is your expected behavior you'll know because it is an Ajax request.

That said, I'd recommend working on the way that you are rendering content and look up information on progressive enhancement.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文