我在執行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/action
和controller/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
我大概可以猜出它爲什麼給出錯誤,但更重要的問題是如何使它工作?謝謝!
請擴大您的答案。如此一來,很難看出這是否解決了問題。我有固定的標點符號。 – chryss