2015-02-14 3 views
0

Я хочу следующий вид URL для моего приложения@ Html.ActionLink для пользовательских маршрутизации

http://domaiinname/Conent

Так я создал пользовательский маршрут и достичь таким образом в какой-то акцент. Но теперь проблема заключается в том, как я могу создать эту URL-форму ActionLink.

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Custom", 
      url: "{content}", 
      defaults: new { controller = "Content", action = "Index" }, 
      namespaces: new[] { "Some.Web.Controllers" }, 
      constraints: new { IsContent = new IsContentPage() } 
     );   

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
      namespaces: new[] { "Some.Web.Controllers" } 
     ); 

    } 
} 

URL Ограничить

public class IsContentPage : IRouteConstraint 
{ 
    public bool Match 
      (
       HttpContextBase httpContext, 
       Route route, 
       string parameterName, 
       RouteValueDictionary values, 
       RouteDirection routeDirection 
     ) 
    { 
     var enumlist = Enum.GetValues(typeof(Common.Content)).Cast<Common.Content>().Select(v => v.ToString().ToLower()).ToList(); 
     var keysValue = values.Select(x => x.Value.ToString().ToLower()).FirstOrDefault(); 
     Int32 isContent = enumlist.Where(x => x == keysValue).Count(); 
     if (isContent > 0) 
     { 
      return true; 
     } 
     return false; 
    } 
} 

Теперь, как я могу генерировать ссылку как http://domain/content

ответ

Смежные вопросы