2016-02-16 253 views
0

我只是下面的行動創造了我的控制器:ASP.net MVC路由

public ActionResult Serial(string letterCase) 
{ 
    string serial = "SAM_ATM_1.0.0"; 
    if (letterCase == "lower") 
    { 
     return Content(serial.ToLower()); 
    } 
    return Content(serial); 
} 

及以下路由規則添加上述默認操作:

routes.MapRoute(
    name: "Serial", 
    url: "serial/{letterCase}", 
    defaults: new { controller = "Home", action = "Serial", letterCase = "upper" } 
); 

但是調用調試會話URL http://localhost:5532/home/serial/lowerletterCase是傳遞null值。

+3

這是您的定義中的第一條路線嗎?要匹配它,你需要調用'...... 5532/serial/lower'(或者將路由URL改爲'url:「home/serial/{letterCase}」') –

+0

@StephenMuecke是否可以編寫規則/ home/serial/lower和/ serial/lower是否工作?我嘗試了{controller}/serial/{letterCase},但如果沒有控制器名稱,它將不起作用,並且/ serial/lower會導致錯誤,但是/ home/serial/lower會起作用。 – VSB

+0

您可以隨時添加2個路由定義 - 一個用於'url:「home/serial/{letterCase}」',一個用於'url:「serial/{letterCase}」'(兩個默認值:'相同) –

回答

0

因爲你撥打本地主機:5532/ /串口/下,嘗試調用本地主機:5532 /串口/低

,或者,如果您需要本地主機:5532 /家庭/串口/下,重寫你的路線規則爲

routes.MapRoute(
    name: "Serial", 
    url: "home/serial/{letterCase}", 
    defaults: new { controller = "Home", action = "Serial", letterCase = "upper" } 
); 
+0

是否可以編寫規則,使/ home/serial/lower和/ serial/lower都起作用?我試過'{controller}/serial/{letterCase}',但沒有控制器名稱就無法工作,'/ serial/lower'會導致錯誤,但是'/ home/serial/lower'工作。 – VSB

+1

routes.MapRoute( name:「Serial1」, url:「home/serial/{letterCase}」, 默認:new {controller =「Home」,action =「Serial」,letterCase =「upper」} ) ; –

+1

routes.MapRoute( name:「Serial2」, url:「serial/{letterCase}」, 默認值:new {controller =「Home」,action =「Serial」,letterCase =「upper」} ); –