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