[英]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.