1

我使用 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 中手动执行,因为我的页面每天都会增加

谢谢

4

4 回答 4

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");
}

注意:这会忽略任何必须提取和重新添加的查询字符串,如果您希望它不区分大小写,您也必须处理它。

于 2012-06-05T16:24:17.860 回答
1

如果您(实际上)愿意尝试 url 重写等为什么不尝试ASP.net 4 Web Pages呢?

  • 您可以在 C# (cshtml) 或 VB (vbhtml) 中执行 Razor 语法。
  • 默认情况下,您会获得“漂亮的 url”(没有配置也没有 global.asax 路由)
  • 您可以使用 Visual Studio 甚至 WebMatrix

可能的挑战:

  • (新)语法 - 但它并不难 - 主要是@而不是<%=..%>
  • 如果您对 ASP.Net 控件更熟悉,那么它可能会比简单得多的控件更难...
于 2012-06-06T05:44:08.303 回答
1

ASP.NET 路由是最好的方法, http: //msdn.microsoft.com/en-us/library/cc668201.aspx

我已经编写了一个导航项目,它也会对您有所帮助, http: //navigation.codeplex.com/ - 如果您对此感兴趣并需要任何帮助,请告诉我。

于 2012-06-05T22:00:38.550 回答
1

基于配置的 URL 重写是您的最佳选择。看这里:http: //msdn.microsoft.com/en-us/library/ms972974.aspx。重写是基于模式的,因此您所描述的(mysite.com/customer1.aspx 到 mysite.com/customer1)是可能的。

于 2012-06-05T16:18:46.037 回答