Html.Action - Получить против Поста - PullRequest
19 голосов
/ 02 июля 2011

Я делаю это очень часто:

<div id='Product'>
@Html.Action("Create", "Product")
</div>

это удобно, потому что я могу делегировать рисование формы создания продукта другому действию контроллера для встраивания на местах. Однако у меня есть проблемы в том, что метод иногда (я не выяснил, при каких условиях) вызовет [HttpPost] моего действия контроллера, что, конечно, завершается неудачей.

Есть ли способ заставить @ Html.Action () вызвать GET-версию?

Ответы [ 4 ]

19 голосов
/ 02 июля 2011

Способ работы Html.Action заключается в том, что если текущий запрос страницы является методом post, тогда он будет искать метод с именем HttpPost.

.POST-публикация текущей страницы и действие аналогичным образом предполагает, что все действия, которые должны выполняться, также должны быть POST.

Я не знаю способа заставить его переключиться на другой метод, подобный этому.

4 голосов
/ 12 февраля 2014

Попробуйте добавить атрибут AcceptVerbs к вашему действию:

[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
public ActionResult Create()
{
    //Your code
}

Это будет работать как для запросов GET, так и для запросов POST.

0 голосов
/ 11 февраля 2017

Я тоже столкнулся с подобной проблемой, и решение действительно существует.Просто проверьте, является ли запрос get или POST в View с использованием свойства IsPost и VOILA ....

@if(!IsPost)    
{    
    HTML.Action("ActionName")    
}

Относительно того, кто сталкивался с подобной проблемой ...

0 голосов
/ 23 февраля 2015

Я только что столкнулся с этой проблемой, которую трудно было идентифицировать. Вместо этого я использовал Html.RenderPartial, например:

<div id='Product'>
@{Html.RenderPartial("_CreatePartial", new Product());}
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...