我构建了一个简单的ASP.NET网站,其中包含一个菜单,其中包含链接到每个菜单项的所有页面URL。当我点击一个菜单项时,页面URL出现在地址栏中,如“http://mywebsite/xyz/webform1.aspx”。我想隐藏此页面网址,而是仅显示网站的网址,例如所有网页的“http:// mywebsite”。请告诉我这是如何实现的。提前致谢。 如果这太复杂了,那么是否有可能为每个页面显示一个假网址代替实际网址?我不想在网址中显示实际的网页名称。
答案 0 :(得分:3)
你可以合理地实现这一点的唯一方法是使用通常称为“URL Cloaking”的方法,你可以使用框架集或iframe来包装页面,以便所有动作都在框架内发生,而不会改变浏览器URL。
以一种不合理的方式实现这一点,你需要编写一个自定义视图引擎(我建议使用MVC,如果你认真对待这个)你使用像会话这样的持久存储,因为它绑定到用户存储页面的“url”。在您的视图引擎中,您可以让它与会话进行交互,以确定用户应该呈现哪个物理页面的位置。
在此之后,您需要实现所有自己的Redirect / RedirecToAction功能,因为您不再使用真正的重定向,但在会话中会有一个像RedirectLocation这样的变量。
要做到这一点,这将是一项相当庞大的任务,我建议不要这样做。如果你绝对觉得你需要单一的URL,那就选择隐形方式。或者正如@Slaks所评论的那样根本就不这样做。
答案 1 :(得分:2)
我使用称为“URL路由”的技术在此链接中找到了解决方案,这是ASP.NET 3.5 SP1中的新增功能。我使用ASP.NET 3.5和IIS6。我的主要目的是隐藏实际的页面URL(我应该在我的问题中明确这一点),这可以通过使用这种技术显示友好的URL来实现。这篇文章有帮助。感谢大家的快速回复,并建议其他方法来实现这一点。
答案 2 :(得分:1)
将您的网站放在iframe中,例如您在www.mysite.com上有index.html,在index.html中,您有一个包含实际网站的iframe,当用户浏览您网站上的网页时,他们总会看到“www.mysite.com”
答案 3 :(得分:1)
不确定为什么要这么做......但是这样做的一个简单方法就是
创建一个链接按钮,将OnclientClick事件设置为Javascript函数:
<asp:LinkButton ID="myButton" OnClientClick="go();" runat="server" Text ="Go somewhere"/>
Next add a javascript function to go where you want to redirect:
<script type="text/javascript">
function go() {
window.location = "http://www.google.com/";
}
</script>
它将隐藏URL - 您只需在浏览器中看到一个javascript调用,页面就会转到您想要的位置!当然这是更多的工作......但它有效...
答案 4 :(得分:0)
您寻找的内容通常称为“single-page web application”或“单页网络应用程序”(甚至是Single-Page Interface Model)。可以通过大量使用JavaScript来实现:用户始终保持相同的URI,并且页面的所有更新都是部分的,并使用XHR获取。
答案 5 :(得分:0)
尝试使用Server.Transfer,创建一个充当网关的页面并传递URL。 它应该很容易实现。
答案 6 :(得分:0)
你可以使用URL重写来隐藏web.config中的地址和Application_BeginRequest事件中的Global.asmx文件中的地址,并获取url并通过以下方式重写 HttpApplication app = sender as HttpApplication
app.Context.RewritePath(Path,true);