0

我有一个子域http://trade.businessbazaar.in。我以这种方式从数据库动态创建 URL http://trade.businessbazaar.in/mycompany。为了显示详细信息,我在那里有一个 index.aspx 文件,我认为在每次请求时 index.aspx 页面都会相应地加载和显示数据。此外,在 index.aspx 页面上有一个母版页,我从中捕获文本 mycompany 并在数据库中查询它以获取结果。但似乎没有任何效果。

真正的链接是http://trade.businessbazaar.in/Symparlife。但它无法加载 index.aspx。我需要一种没有任何第三方 dll 或重写器的干净方法。直接在配置中推送一些行并开始工作。那就是 url 将是相同的,但索引页面将被加载......

简而言之,我想说

我需要 StackOverflow 类型的 clean url 机制来获取页面

提前致谢

4

1 回答 1

1

您可以处理 Global.asax 中的 Begin_Request 事件并添加自定义代码以重定向到 index.aspx 并将 URL 的部分转换为查询字符串参数。您应该使用 Server.Transfer 将 URL 保留在浏览器中。

我建议升级到 4.0 并使用 Routing enine。您应该检查标准路由是否可用于 ASP.NET 3.5 的下载。我相信你的代码很快就会变得混乱。去过也做过。

正如@Mike Miller 在评论中提到的那样,路由引擎随 ASP.NET 3.5 一起提供。您可以在此处查看文档 - http://msdn.microsoft.com/en-us/library/system.web.routing(v=vs.90).aspx

这是有关如何将其与 Web 表单一起使用的教程 - http://weblogs.asp.net/scottgu/archive/2009/10/13/url-routing-with-asp-net-4-web-forms-vs -2010-and-net-4-0-series.aspx

对于您的情况,代码将类似于:

routes.MapPageRoute("company-index", "/{company}", "~/index.aspx")

在 index.aspx 中,您可以像这样访问公司的路线值:

string company = (string)Page.RouteData.Values["company"];

请记住,您最好在 URL 中的实际参数(公司名称)之前添加一些内容。如果你不这样做,你以后会遇到问题,因为你可能想添加一个像“/Login”这样的URL,但是你必须验证用户不能创建一个名为“Login”的公司。不是 Stack Overflow 在 URL 中的实际问题信息之前有“/questions/”。

于 2012-05-01T13:22:36.003 回答