簡體   English   中英

特定URL的ASP.NET路由約束

[英]ASP.NET Routing Constraint For Specific URL

我有一個asp.net應用程序,我需要為給定的醫學專長提供一條一般路線,以路由到給定的頁面,但我要路由到另一個頁面。

例如,我希望/ Specialties / Allergy,/ Specialties / Nutrition像當前一樣,將所有路由路由到給定頁面。 我不知道的部分是我希望URL仍然顯示/ Specialties / Urology,但將泌尿科病倒到另一個頁面,因為它實際上已成為它自己的子站點,而其他站點則不在。

我確定我需要添加Route約束,但似乎無法弄清楚該如何實現。

我已經包括了我目前用於一般路線的所有相關代碼。

private static void AddEntityRoute(string name, string url, string path, string dir)
{
((List<string>)HttpContext.Current.Application["RouteList"]).Add(url);

RouteTable.Routes.Add(name,
 new Route(url, new EntityRouteHandler(path, dir)));
}

public class EntityRouteHandler : IRouteHandler
{
    string _virtualPath;
    private readonly string baseDir;

    public EntityRouteHandler(string virtualPath, string baseDir)
    {
        _virtualPath = virtualPath;
        this.baseDir = baseDir;
    }

    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        var display = BuildManager.CreateInstanceFromVirtualPath(
                        _virtualPath, typeof (Page)) as IEntityDisplay;

        display.FriendlyURL = baseDir + requestContext.RouteData.Values["name"];
        return display;
    }
}

AddEntityRoute("Specialties", "Specialties/{name}", "~/SpecialtyDisplay.aspx", "/Specialties/");

您正在以錯誤的方式處理此問題。

如果您打算將特定的URL定向到其他控制器/操作,則只需添加其他路由即可。

routes.MapRoute("", "Specialties/Urology", new { controller = "someothercontroller", action = "someotheraction" });
routes.MapRoute("", "Specialties/{speciality}", new { controller = "specialities", action = "show" });

在此,對“專業/泌尿外科”的請求將與第一條路線匹配。 對“特殊/過敏”的請求將與第二個匹配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM