類似した質問がたくさんありますが、この問題は非常によくありません。 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テンプレートのデフォルト) 、私は推測する、属性のルーティングが慣例に基づくルートよりも優先されます。
が有効になっていることを確認してくださいあなたは規則ベースのルーティング前にrouteconfig.csのルーティング属性を有効にしていますか? – Nkosi
問題が発生している可能性のあることはたくさんありますが、問題を特定するのに十分な情報を提供していません。 1) 'EmpresaController'というコントローラの' UpdateFilial'メソッドはありますか? 2) 'UpdateFilial'のオーバーロードはありますか? 3) 'filial.IDFilial'の値はintですか?一つのことは確かです。 'Url.Action'への呼び出しはあなたが提供したルートと一致しません。そして、そうではありません、AttributeRoutingは従来のルートに優先しません - ルートは登録された順序で考慮されます。期間。 – NightOwl888