簡體   English   中英

ASP.NET MVC C#路由.MapRoute不起作用

[英]ASP.NET MVC C# routes.MapRoute not working

我正在更改ASP.NET,MVC,C#應用程序,但routes.MapRoute條目未按預期工作。 在我的Global.asax.cs文件中,我有以下兩條路線-

routes.MapRoute(
            "MyRoute1", // Route name
            "{controller}/{action}/{something}/{name}/{id}/{myParameterA}", 
            new { controller = "MyController", action = "MyActionA", category = "something", name = "name", id = "id", myParameterA = "myParameterA" });


routes.MapRoute(
            "MyRoute2", // Route name
            "{controller}/{action}/{something}/{name}/{id}/{myParameterB}", 
            new { controller = "MyController", action = "MyActionB", category = "something", name = "name", id = "id", myParameterB = UrlParameter.Optional } );

我的控制器中的代碼如下所示:

    public ActionResult MyActionA(string something, string name, string id, string myParameterA)
    {
       //do cool stuff!
    }

    public ActionResult MyActionB(string something, string name, string id, string myParameterB)
    {
       //do awesome stuff!
    }

當我調用MyActionB ,即使參數位於URL中(例如:/ MyController / MyActionB / aThing / aName / 123/456),最終參數myParameterB也會作為null進入Controller。

確實希望最終參數(在上面的示例中為“ 456”)是可選的。

MyActionA運行正常。

任何建議,將不勝感激! 另外,關於routes.MapRoute工作方式是否有很好的參考? 謝謝!

不確定,但是我想將兩者互換一下,當您在第一個設置“ myParameterA =” myParameterA“”時,您將分配一個默認值,當您傳遞/ MyController / MyActionB / aThing / aName / 123/456時,URL為映射到第一個,但數字456與默認字符串值不兼容-因此作為空值傳遞。

編輯:哦,作為參考,Apress Pro MVC 3在Safari Informit上有一章非常出色。

這是因為一旦用路由本身中的字符串替換了參數,就無法區分這2條路由。 如果在路線上添加靜態零件,則應該能夠區分它們。

routes.MapRoute(
        "MyRoute1", // Route name
        "{controller}/{action}/{something}/{name}/{id}/firstroute/{myParameterA}", 
        new { controller = "MyController", action = "MyActionA", category = "something", name = "name", id = "id", myParameterA = "myParameterA" });


routes.MapRoute(
        "MyRoute2", // Route name
        "{controller}/{action}/{something}/{name}/{id}/secondroute/{myParameterB}", 
        new { controller = "MyController", action = "MyActionB", category = "something", name = "name", id = "id", myParameterB = UrlParameter.Optional } );

看看是否可行。

暫無
暫無

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

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