ASP.NET допустимые действия именования? - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть представление, доступ к которому можно получить тремя способами:

1.Пустая форма - начальная загрузка из меню

[HttpGet]
public ActionResult GetMe() 

2.Заполненная форма после отправки формы (после выбора раскрывающегося значения)

[HttpPost]
public ActionResult GetMe(int firstDropdownValue)

3.Заполняется после запроса с другой страницы через JavaScript.Это GET.

[HttpGet]
public ActionResult GetMe(int secondDropdownValue, int thirdDropdownValue)

Проблема в том, что # 3 конфликтует с # 1, потому что два доступа к одному ActionName не разрешены.Я мог бы дать # 3 другое имя действия, но мне бы очень хотелось, чтобы оба отображали одно и то же имя в URL.

Я посмотрел на атрибут [ActionName], но не думаю, что он может мне помочь,Есть ли обходной путь?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

После того, как вы исправите ошибку компиляции, вы можете объединить # 1 и # 3 с обнуляемым int.

[HttpGet]
public ActionResult GetMe(int? dropDownValue)
0 голосов
/ 03 апреля 2012

@ Эндрю Барбер прав. Забудьте на секунду о MVC, у вас не может быть двух методов с одинаковой сигнатурой. Они могут быть объединены в один.

[HttpGet]
public ActionResult GetMe() 

[HttpPost]
[ActionName("GetMe")]
public ActionResult GetMeHttpPost(int dropDownValue)

Это, конечно, означает, что вам нужно изменить третий вариант (JS), чтобы сделать POST вместо GET. Если это проблема, вам понадобится третье действие с отдельным URL.

Хотя я не представляю сценарий, в котором требуется JavaScript для "ПОЛУЧЕНИЯ" всей страницы - не должно ли это быть дочерним действием, возвращающим PartialViewResult?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...