Публикация с внешнего сайта на контроллере MVC с набранными параметрами - PullRequest
0 голосов
/ 15 августа 2011

Я новичок в MVC, поэтому я боролся с названием вопроса - не уверен, что уже есть что-то, что я хочу сделать.

Предположим, у меня есть контроллер: FooController. Он обрабатывает набор представлений, каждый из которых выполняет одну и ту же базовую задачу, но использует разные модели по разным причинам. Поэтому я создаю действие для каждой модели, и это хорошо работает:

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

и т.д ...

Что я хочу сделать (если возможно) - это создать действие, которое может принимать POST от стороннего веб-сайта (в дополнение к типизированным представлениям локально), и я не могу понять, как принять данные без MVC выдают исключение:

Текущий запрос на действие 'Bar' для контроллера типа 'FooController' неоднозначен между следующими методами действия:

И в нем перечислены вышеуказанные действия.

Я пробовал пару вещей:

  • Создан метод Bar (ExternalSiteType t) - исключение
  • Создан метод Bar (ExternalSiteParam1 p, ExternalSiteParam2 p2) - исключение
  • Прокомментировал другие действия - Успех для обоих методов выше

Есть идеи, как заставить это работать?

РЕДАКТИРОВАТЬ: Примеры маршрутов

/ Foo / Bar / Type1

/ Foo / Bar / Type2

/ Foo / бар / ExternalSite

1 Ответ

0 голосов
/ 15 августа 2011

Я не думаю

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

может работать вообще, даже если это было с того же сайта. Вы не можете иметь два действия с одним и тем же именем, если они не используют разные глаголы Http ([HttpGet],[HttpPost] и т. Д.).

Лучше всего было бы создать действие с другим именем для внешнего сайта, преобразовать переданную информацию в Type1 и затем перенаправить на Bar(Type1 t). См. ASP.NET MVC Redirect с моделью , чтобы узнать о различных способах перенаправления и сохранения вашего сложного объекта.

...