2010-02-09 101 views
0

我在我的ASP.NET MVC應用程序中有兩條路線。ASP.NET MVC 2一條線路工程,一條線路不

第一個工作正常 - 它是一個返回視圖的ActionResult。

第二個在同一個控制器上,並且是一個返回Json響應的ActionResult。它需要一些額外的參數。

這第二條路線是在我的開發機器上工作,但是當我將它部署到服務器時,我收到一個空白的響應。任何建議將受到感謝。

我還將路由複製粘貼到瀏覽器中以消除jQuery JavaScript中的任何問題。

的方法

[HttpGet] 
    public ActionResult CheckSku(string id, string brand) 
    { 
     CheckSkuModel model = new CheckSkuModel(); 

     model.Id = id; 
     model.Brand = brand; 

     return Json(model, JsonRequestBehavior.AllowGet); 
    } 

的路由

routes.MapRoute(
      "Default",            // Route name 
      "{controller}.mvc/{action}/{id}",       // URL with parameters 
      new { controller = "Orders", action = "Send", id = "" } // Parameter defaults 
     ); 

     routes.MapRoute(
      "CheckSku",            // Route name 
      "{controller}.mvc/{action}/{id}/{brand}",       // URL with parameters 
      new { controller = "Orders", action = "CheckSku", id = "", brand = "" } // Parameter defaults 
     ); 

回答

1

兩個可以快速檢查,可以幫助的事情: 1.交換兩個455元如此 「CheckSku」 高於 「默認」 2.使「CheckSku」更具體,因此看起來像這樣:

routes.MapRoute(
     "CheckSku",            // Route name 
     "Orders.mvc/CheckSku/{id}/{brand}",       // URL with parameters 
     new { controller = "Orders", action = "CheckSku", id = "", brand = "" } // Parameter defaults 
    ); 

這是另一個控制器不會錯誤地選擇網址。

另一種方法是在生成url時使用routelink helper,以便指向正確的路由。

+0

RouteLink絕對是這種方式 - 我使用它,現在一切正常。謝謝。 – Fenton

0

當你說你「回來一個空白的迴應」,你的意思是你沒有得到一個錯誤,但服務器沒有返回任何東西?是什麼讓你認爲這是一個路由問題?

一些故障排除提示:

  1. 使用Fiddler檢查你正在做的HTTP請求和服務器發回的原始HTTP響應。如果您獲得500個響應代碼,請檢查響應是否有錯誤信息。

  2. 您可以將遠程調試器附加到服務器上嗎?這可能會讓您有機會調查引發的任何異常。

+0

我用Firebug來確定響應已經是200「OK」響應。沒有錯誤 - 響應是空的,即沒有json序列化的數據。我猜這是一個路由問題,就好像請求將它發送給控制器/操作一樣,響應不可能是200和空白。 – Fenton