簡體   English   中英

如果我在 mvc5 中將默認路由和屬性路由設置為相同的 controller 則常規路由不起作用

[英]If I set default route and attribute routing to same controller in mvc5 then conventional routing is not working

Controller

    [HttpGet]
[Route("find-a-doctor")]
public ActionResult FindADoctor()
{
    ViewData["sList"] = specialities ;
    return View();
}

路由配置

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapMvcAttributeRoutes();
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}",
        defaults: new { controller = "UserPanelFinADoctor", action = "FindADoctor" },
         namespaces: new string[] { "InstacareClone.Controllers" }
    );
}

這是我調試代碼時的結果。 它說“找不到資源”

我對此進行了研究,並在 microsot docs 上找到了這個。

動作要么是傳統路由,要么是屬性路由。 在 controller 上放置路由或操作使其屬性路由。 定義屬性路由的動作不能通過常規路由到達,反之亦然。 controller 上的任何路由屬性都會使 controller 屬性中的所有操作都被路由。

所以在你的例子中。因為你已經在基於屬性的路由下注冊了你的動作的路由。 約定路由不起作用。 應該使用其中之一,而不是兩者。

文章鏈接 - https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing?view=aspnetcore-5.0#mixed-routing-attribute-routing-vs-conventional-routing

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM