2017-02-24 31 views
0

我已將新動作添加到我的asp.net mvc應用程序,並在RouteConfig.cs內添加了特定的規則。ASP.NET MVC:所有控制器值都傳遞爲空

但是所有參數都以null的形式傳遞。

這裏是我的路線規則:

routes.MapRoute(
    "toekn_submit_route", 
    "{controller}/SendToken/{platform}/{token}/{uid}", 
    new { controller = "Home", action = "SendToken" } 
    , new[] { "MvcApplication.Controllers" } 
); 

這裏是行動減速:http://localhost:51650/Home/SendToken/platform/token/uid

+0

@RahulSingh對不起,我不明白你的問題。你能解釋更多嗎? – VSB

+0

我的意思是你沒有這樣的'action'的佔位符:''{controller}/{action}/{platform}/{token}/{uid}「' –

+0

@RahulSingh action在我的url中被硬編碼並在路由參數中定義。 – VSB

回答

1

途徑是如何添加順序很重要:

public JsonResult SendToken(string platform, string token, string uid) { ... } 

我使用這個網址撥打行動。首先匹配的路線獲勝。

確保此添加的路線是在更一般的路線之前添加的,否則它們將與未按預期方式填充佔位符的另一路線相匹配。

routes.MapRoute(
    name: "token_submit_route", 
    url: "{controller}/SendToken/{platform}/{token}/{uid}", 
    defaults: new { controller = "Home", action = "SendToken" }, 
    namespaces: new[] { "MvcApplication.Controllers" } 
); 

//...other more general routes. 

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

例如,如果Default路線被放置令牌路線之前,將仍然匹配http://localhost:51650/Home/SendToken/platform/token/uid

其中

controller = "Home", 
action = "SendToken", 
id = "platform/token/uid" 
+0

所有的問題是,我錯過了傳遞uid作爲第三個參數,所以這個路由規則沒有被解僱。 – VSB

相關問題