0
很多類似的問題,但沒有一個非常喜歡這個問題: 我在MVC5項目中使用屬性路由。 當試圖定義這樣一個簡單的途徑:Url.Action在屬性路由時生成錯誤的URL
[HttpGet]
[Route("Empresa/Filial/{id:int}/Editar")]
public ActionResult UpdateFilial(int id)
{
...
}
,並生成一個URL上來看,是這樣的:
<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/Editar?id=1
結果爲404,因爲它應該是:
"http://localhost:59936/Empresa/Filial/1/Editar"
我在這做錯了什麼?
編輯:
我RouteConfig看起來是這樣的:
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 }
);
}
}
(上MVC5模板默認的VisualStudio2017) 所以,我想,屬性路由擁有基於約定的路線的優先級。
之前是否啓用屬性以公約爲基礎的路線前routeconfig.cs路由? – Nkosi
有很多不同的事情可能發生,但是您沒有提供足夠的信息來確定問題。 1)名爲'EmpresaController'的控制器中的'UpdateFilial'方法? 2)是否有'UpdateFilial'的重載? 3)「filial.IDFilial」的值是int嗎?有一點是確定的 - 對Url.Action的調用與您提供的路由不匹配。不,AttributeRouting不優先於基於會議的路由 - 路由按照它們註冊的順序來考慮。期。 – NightOwl888