将所有POST请求路由到单个ApiController

时间:2012-03-19 00:15:59

标签: c# asp.net-mvc asp.net-web-api

我希望将所有PUT和POST请求反序列化为适当的命令,并通过消息总线发送到端点。我宁愿没有每个命令的ApiController,也没有实现普通Put方法的基本控制器。

那么,是否可以将给定动词的所有请求路由到单个ApiController或适当的东西,并仍然受益于模型绑定?

1 个答案:

答案 0 :(得分:0)

听起来你正在寻找的是[HttpGet]和[HttpPost]控制器属性。这允许您创建两个因此属性而不同的方法。例如:

[HttpGet]
public ActionResult Index(int viewId)
{
    return View(new IndexViewModel(viewId));
}

[HttpPost]
public ActionResult Index(IndexViewModel model)
{
    model.DoSomethingUsefulWithPostData();
    return View(model);
}

第一种方法将采用查询字符串参数并从中构造视图模型。第二个将在表单上调用并重建模型,包括模型中POST本身的任何值。