我使用VS2010,C#来开发一个ASP.NET网站,我的客户希望我的网页是这样的:
mysite.com/customer(事实上他们称之为mysite / customer / default.aspx)
所以我为每个客户手动创建了几个文件夹,并在文件夹中插入了default.aspx文件,以便用户可以通过输入mysite.com/customer来查看客户页面
是否有更好的方法来执行此方案?我不想拥有mysite.com/customer1.aspx,我想拥有mysite.com/customer1,无论如何我可以删除文件夹(及其包含default.aspx文件)并使用我的客户数据库自动生成内容?
我应该使用URL重写吗?无论如何,我可以创建页面mysite.com/customer1.aspx,用户可以通过输入mysite.com/customer1查看它吗?
我认为可以在web.config中重写URL,但我不想在web.config中手动执行,因为我的页面会每天增加
感谢
答案 0 :(得分:2)
如果你真的想在代码中而不是在配置中这样做,你可以使用HttpContext的RewritePath方法在Application_BeginRequest中自己重写路径
例如(这是一个非常简化的例子),如果你的aspx在子文件夹中的根目录,它可以是这样的:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (HttpContext.Current.Request.Path.StartsWith("/customer"))
HttpContext.Current.RewritePath("/customer/whatever.aspx");
}
注意:这会忽略必须提取和重新添加的任何查询字符串,如果您希望它不区分大小写,那么您也必须处理它。
答案 1 :(得分:1)
基于配置的URL重写是您的最佳选择。看这里:http://msdn.microsoft.com/en-us/library/ms972974.aspx。重写是基于模式的,所以你所描述的(mysite.com/customer1.aspx到mysite.com/customer1)是可能的。
答案 2 :(得分:1)
ASP.NET路由是执行此操作的最佳方式,http://msdn.microsoft.com/en-us/library/cc668201.aspx
我已经写了一个导航项目,也会帮助你,http://navigation.codeplex.com/ - 如果你对此感兴趣并需要任何帮助,请告诉我。
答案 3 :(得分:1)
如果您(实际上)愿意尝试重写网址,那么为什么不尝试ASP.net 4 Web Pages?
可能的挑战:
@
而不是<%=..%>