2016-12-28 16 views
0

は、私がこのようなURLがあります。URLからアクション名を削除し、URLにページタイトルを追加 - Asp.net MVC

http://localhost:17594/Contact/Contact 

今、私はこのように表示する:

http://localhost:17594/Contact/Contact-us 

RouteConfigを:

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

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

    routes.MapRoute(
     name: "Contacts", 
     url: "{controller}/{title}", 
     defaults: new { controller = "Contact", action = "Contact", title = UrlParameter.Optional }, 
     namespaces: new[] { "FinalKaminet.Controllers" } 
    ); 

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

} 

ビュー

@Html.ActionLink("Contact Us", "Contact" , "Contact" , new { title = "contact-us" } , null) 

しかし、私はCategoriesルートを使用している行63でエラーが発生しました。

Exception Details: System.InvalidOperationException: No route in the route table matches the supplied values.

Source Error:

Line 62: @Html.ActionLink("وبلاگ", "")

Line 63: @Html.Action("MenuCat" , "Home")

何が問題なのですか。

答えて

0

あなたルート設定ファイルでは、この

をお試しください:

routes.MapRoute(
     name: "Contacts", 
     url: "Contact/{action}/{title}", 
     defaults: new { controller = "Contact", action = "Contact", title = UrlParameter.Optional }, 
     namespaces: new[] { "FinalKaminet.Controllers" } 
    ); 
0

あなたは2つのオプションがあります。

いずれ規則ベース

routes.MapRoute(
    name: "ContactUs", 
    url: "contact/contact-us", 
    defaults: new { controller = "Contact", action = "Contact" }, 
    namespaces: new[] { "FinalKaminet.Controllers" } 
); 

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

または規則ベースの経路

//enable attribute routing 
routes.MapMvcAttributeRoutes(); 

//other convention-based routes. 
routes.MapRoute(....); 

とコントローラとアクションに直接ルートを適用する前にRouteConfigのルーティング属性を有効にルーティングを介して特定のルートを追加します。

public class ContactController : Controller { 

    //GET contact/contact-us 
    [HttpGet] 
    [Route("Contact/Contact-us")] 
    public ActionResult Contact() { … } 

} 
関連する問題