2017-05-09 18 views
0

類似した質問がたくさんありますが、この問題は非常によくありません。 MVC5プロジェクトで属性ルーティングを使用しています。 このような単純なルートを定義しようとしている:属性ルーティングでUrl.Actionが間違ったURLを生成する

[HttpGet] 
    [Route("Empresa/Filial/{id:int}/Editar")] 
    public ActionResult UpdateFilial(int id) 
    { 
     ... 
    } 

を、ビュー上のURLを生成し、このように:

http://localhost:59936/Empresa/Filial/Editar?id=1 

<a href="@Url.Action("UpdateFilial", "Empresa", new { id = filial.IDFilial })" title="@Lang.M("TitleEditar_Filial")" class="btn btn-xs btn-default">EDIT</a> 

私のようなもので終わります

"http://localhost:59936/Empresa/Filial/1/Editar" 
0123のようになるため、404になります。

私はここで何が間違っていますか?私RouteConfigはこのようになります

EDITだから、

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

     //Acionando rotas por atributos (annotations) 
     routes.MapMvcAttributeRoutes(); 

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

(VisualStudio2017上MVC5テンプレートのデフォルト) 、私は推測する、属性のルーティングが慣例に基づくルートよりも優先されます。

+0

が有効になっていることを確認してくださいあなたは規則ベースのルーティング前にrouteconfig.csのルーティング属性を有効にしていますか? – Nkosi

+0

問題が発生している可能性のあることはたくさんありますが、問題を特定するのに十分な情報を提供していません。 1) 'EmpresaController'というコントローラの' UpdateFilial'メソッドはありますか? 2) 'UpdateFilial'のオーバーロードはありますか? 3) 'filial.IDFilial'の値はintですか?一つのことは確かです。 'Url.Action'への呼び出しはあなたが提供したルートと一致しません。そして、そうではありません、AttributeRoutingは従来のルートに優先しません - ルートは登録された順序で考慮されます。期間。 – NightOwl888

答えて

0

は、属性ルーティングが慣例に基づくルートの前にRouteConfig

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

     //enable attribute routing 
     routes.MapMvcAttributeRoutes(); 

     //convention-based routes 

     //...other routes 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 
+0

それはすでにそれのように見えます。トリッキーなこと... –

関連する問題