使用标准 asp.net3.5 和 web.config 将 url 重定向到索引.aspx页面



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

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

总之,我想说

我需要堆栈溢出类型的干净 url 机制来获取页面

提前致谢

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

不过,我建议升级到 4.0 并使用路由 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")

在索引中.aspx您可以像这样访问公司的路由值:

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

请记住,您最好在实际参数(公司名称(之前在URL中添加一些内容。如果不这样做,以后会遇到问题,因为您可能想要添加类似"/Login"的URL,但随后您必须验证用户无法创建名为"Login"的公司。不是堆栈溢出在URL中实际问题信息之前有"/questions/"的方式。

最新更新