从我的URL中删除文件夹结构
本文关键字:文件夹 结构 删除 我的 URL | 更新日期: 2023-09-27 18:07:03
如果这个问题已经被问到,我很抱歉,但我有一个asp.net
网站,我所有的页脚页面都存储在Visual Studio
Views> Footer> [Page Names]
当我点击页脚链接时,我的URL显示为:
http://www.mysite.co.uk/Views/Footer/testpage我要做的是从URL中删除"/Views/Footer",所以它看起来像:
http://www.mysite.co.uk/testpage我不知道该怎么做。有没有人能给我一步一步的代码使用指南,以及把它放在哪里,以便它做到这一点。
当我尝试双击我的Global.asax
文件时,它会自动打开Global.asax.cs
文件,我怀疑这也是错误的
将system.web.routing的引用添加到项目
添加urlroutingmodule到HTTP模块:
<configuration>
...
<system.web>
...
<httpModules>
...
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules>
...
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
<handlers>
...
<add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>
...
</system.webServer>
</configuration>
在global.asax:
中定义路由void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes)
{
// Register a route for Categories/All
routes.Add(
"All Categories",
new Route("Categories/All", new CategoryRouteHandler())
);
// Register a route for Categories/{CategoryName}
routes.Add(
"View Category",
new Route("Categories/{*CategoryName}", new CategoryRouteHandler())
);
// Register a route for Products/{ProductName}
routes.Add(
"View Product",
new Route("Products/{ProductName}", new ProductRouteHandler())
);
}
创建路由处理程序类
public class ProductRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string productName = requestContext.RouteData.Values["ProductName"] as string;
if (string.IsNullOrEmpty(productName))
return Helpers.GetNotFoundHttpHandler();
else
{
// Get information about this product
NorthwindDataContext DataContext = new NorthwindDataContext();
Product product = DataContext.Products.Where(p => p.ProductName == productName).SingleOrDefault();
if (product == null)
return Helpers.GetNotFoundHttpHandler();
else
{
// Store the Product object in the Items collection
HttpContext.Current.Items["Product"] = product;
return BuildManager.CreateInstanceFromVirtualPath("~/ViewProduct.aspx", typeof(Page)) as Page;
}
}
}
}
创建处理请求的asp.net页面:
protected void Page_Load(object sender, EventArgs e)
{
dvProductInfo.DataSource = new Product[] { Product };
dvProductInfo.DataBind();
}
protected Product Product
{
get
{
return HttpContext.Current.Items["Product"] as Product;
}
}
这是一个很好的参考工作,我过去在webforms应用程序上使用过这个,它像一个魅力。
如果你不使用MVC,那么你可以实现一个IHttpModule。互联网上有一些关于如何做到这一点的指南,例如Scott Guthrie在这里:http://weblogs.asp.net/scottgu/tip-trick-url-rewriting-with-asp-net