在 ASP.NET MVC 应用程序中,有 Request.Url
访问Global.asax
中的url 。
但是对于 Angular 应用程序,其 url 类似于 http://domain/#/home
。 Request.Url
我们从Application_BeginRequest
获得或Application_EndRequest
是http://domain/
。 Angular 路线不包括在内。
这是合理的,因为这些路由是在客户端添加的。但是MVC服务器端是否可以获取真实url的值呢?
<小时/>更新:
刚刚选择了 Matteo 的答案作为正确答案。让我澄清一下。
我一直在尝试这个只有一个目的:重写我的网址。
以前我经常查Request.ApplicationPath
并使用字符串函数或内置工具(如 VirtualPathUtility
)操作 url .
对哈希部分的需求是有效的,因为查询字符串参数附加在那里。例如,我有一个像这样的网址:
http://[domain]/#/pay/cancel?paymentId=[some guid]
传统智慧让我想到Global.asax
访问这些查询参数。我没有找到。哈希标签后面的所有内容都会被方便地忽略。
所以正确的方法是在客户端代码中处理这部分url。我正在使用ui-router
。因此,对于 url 重写/重定向,请使用 stateProvider.when(oldUrl, newUrl);
。要访问查询参数,请使用 $state.params
.
经验教训:清晰思考并以不同的心态处理不同的问题。
最佳答案
没有办法,因为 url 的“哈希”部分实际上并不是 url 的一部分。您是否曾经在页面中使用过 anchor 来创建索引?概念是一样的。
无论如何,我无法想象哈希部分如何在服务器端有用。我的猜测是,您认为它很有用,因为您处理问题的方式是错误的。
如果您用更多详细信息补充您的问题,例如您想要实现的目标,我们很有可能为您提供合适的解决方案。
关于javascript - 如何在 Global.asax 中获取 Angular View 的完整 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27862823/