2014-02-25 54 views
0

我在執行POST到以下網址創建/更新一些實體客戶端Backbone.js的框架:
controller/action - 用於創建新
controller/action/{id} - 用於更新現有MVC路由 - 不同的URL,以同樣的動作

欲單個動作Save同時處理操作和根據輸入模型的Id值如下所列執行實體的創建/更新用:

public class TestModel 
{ 
    public int? Id { get; set; } 
    public string Name { get; set; } 
} 

的正在發佈的JSON模型如下所示:{ id: 123, name: "some name" }
因此,我希望有一個控制器操作Save並調整路由表,以便它接受controller/actioncontroller/action/{id}請求操作Save。 我絞盡腦汁試圖實現它。
我的行動看起來像:

[HttpPost] 
public ActionResult Save(TestModel model) 
{ 
    // do something 
} 

以下航線CONFIGS沒有使其工作:
1.

routes.MapRoute(
     name: "Test.Save1", 
     url: "api/test/data", 
     defaults: new { controller = "Test", action = "Save" } 
    ); 

    routes.MapRoute(
     name: "Test.Save2", 
     url: "api/test/data/{id}", 
     defaults: new { controller = "Test", action = "Save", id = UrlParameter.Optional } 
    ); 

工程爲/ API /測試/數據,在張貼到返回404/API /測試/數據/ 123

2.

routes.MapRoute(
     name: "Test.Save", 
     url: "api/test/data/{id}", 
     defaults: new { controller = "Test", action = "Save", id = UrlParameter.Optional } 
    ); 

Works的/ API /測試/數據,上張貼到/ API /測試/數據/返回404 123

3.

routes.MapRoute(
     name: "Test.Save", 
     url: "api/test/data/{*pathInfo}", 
     defaults: new { controller = "Test", action = "Save" } 
    ); 

Works的/ API /測試/數據,上張貼返回404 to/api/test/data/123

我大概可以猜出它爲什麼給出錯誤,但更重要的問題是如何使它工作?謝謝!

回答

0

只需發佈到/ api/test/data:「保存」將具有空id,「edit」不會。

+0

請擴大您的答案。如此一來,很難看出這是否解決了問題。我有固定的標點符號。 – chryss

相關問題