.net MVC路由-同一操作的不同URL
我在客户端有一个backbone.js框架,它可以向以下URL发送帖子,以创建/更新某些实体: 控制器/操作-用于创建新的 控制器/action/{id}-用于更新现有控制器 我希望使用单个操作保存来处理这两个操作,并根据下面列出的传入模型的Id值执行实体创建/更新:.net MVC路由-同一操作的不同URL,.net,asp.net-mvc,asp.net-mvc-4,backbone.js,.net,Asp.net Mvc,Asp.net Mvc 4,Backbone.js,我在客户端有一个backbone.js框架,它可以向以下URL发送帖子,以创建/更新某些实体: 控制器/操作-用于创建新的 控制器/action/{id}-用于更新现有控制器 我希望使用单个操作保存来处理这两个操作,并根据下面列出的传入模型的Id值执行实体创建/更新: public class TestModel { public int? Id { get; set; } public string Name { get; set; } } 发布的JSON模型看起来像:{id
public class TestModel
{
public int? Id { get; set; }
public string Name { get; set; }
}
发布的JSON模型看起来像:{id:123,name:some name}
因此,我希望有一个单一的控制器动作保存,并对路由表进行调优,使其同时接受控制器/动作和控制器/动作/{id}动作保存请求。
我绞尽脑汁想实现它。
我的行为看起来像:
[HttpPost]
public ActionResult Save(TestModel model)
{
// do something
}
以下路由配置无法使其工作:
一,
为/api/test/data工作,在发布到/api/test/data/123时返回404
二,
为/api/test/data工作,在发布到/api/test/data/123时返回404
三,
为/api/test/data工作,在发布到/api/test/data/123时返回404
我大概能猜出它为什么会出错,但更重要的问题是如何让它工作?谢谢大家! 只需将两者都发布到/api/test/data:save的id为空,edit的id为空。请详细说明您的答案。目前,很难看出这是否解决了问题。我有固定的标点符号。
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 }
);
routes.MapRoute(
name: "Test.Save",
url: "api/test/data/{id}",
defaults: new { controller = "Test", action = "Save", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Test.Save",
url: "api/test/data/{*pathInfo}",
defaults: new { controller = "Test", action = "Save" }
);