从外部站点发布到具有类型参数的MVC控制器

时间:2011-08-15 17:23:15

标签: asp.net-mvc asp.net-mvc-routing

我是MVC的新手所以我正在努力解决问题的标题 - 不确定是否有任何事情已经覆盖了我想要做的事情。

假设我有一个控制器:FooController。它处理一组视图,所有视图都执行相同的基本操作,但出于各种原因使用不同的模型。所以我为每个模型创建了一个动作,这很有效:

[HttpPost]
public ActionResult Bar(Type1 t);
[HttpPost]
public ActionResult Bar(Type2 t);

等...

我想要完成的(如果可能的话)是创建一个可以接受来自第三方网站的POST的动作(除了本地的打字视图),我似乎无法弄清楚如何接受没有MVC的数据抛出异常:

  

控制器类型'FooController'上当前的操作请求'Bar'在以下操作方法之间不明确:

它列出了上述行为。

我尝试了几件事:

  • 创建方法Bar(ExternalSiteType t) - Exception
  • 创建方法Bar(ExternalSiteParam1 p,ExternalSiteParam2 p2) - 异常
  • 注释掉其他行动 - 上述两种方法的成功

任何想法如何让这个工作?

编辑:路线示例

/ Foo / Bar / Type1

/ Foo / Bar / Type2

/富/酒吧/ ExternalSite

1 个答案:

答案 0 :(得分:0)

我不认为

[HttpPost]
public ActionResult Bar(Type1 t);
[HttpPost]
public ActionResult Bar(Type2 t);

可以工作,即使它来自同一个网站。除非使用不同的Http谓词([HttpGet],[HttpPost]等),否则不能有两个具有相同名称的操作。

最好的方法是为外部网站创建一个具有不同名称的操作,将传入的信息转换为Type1,然后重定向到Bar(Type1 t)。有关您可以重定向和保留复杂对象的不同方法,请参阅ASP.NET MVC Redirect with model

相关问题