HttpMethod не существует в текущем контексте после обновления до MVC5

После обновления моего приложения MVC4 до MVC5 и выполнения этого tutorial я получаю ошибку компиляции:

@using System.Net.Http
@model MyApplication.Models.Data
@{
    ViewBag.Title = "My Page";
}
@using (Ajax.BeginForm("Add", "Home", HttpMethod.Post, new AjaxOptions() { UpdateTargetId = "Result" }, new { @class = "form-horizontal" }))
{
    @Html.Partial("Partial")
    <div id="Result">
        @Html.Partial("AddPartial", Model);
    </div>
}

ошибка CS0103: имя «HttpMethod» не существует в текущем контексте

У меня есть ссылка на System.Net.Http.dll (4.0.0.0) в моем проекте.

РЕДАКТИРОВАТЬ: после обновления у меня все еще есть предупреждение в «управлении пакетами Nuget», в котором говорится, что некоторые пакеты не могут быть полностью удалены, и мне предлагается перезапустить VS, но это не сработало, и предупреждение остается там.


person Hélder Gonçalves    schedule 23.10.2014    source источник
comment
Есть ли у вас какие-либо предупреждения о том, что сборка не может быть загружена?   -  person CodeCaster    schedule 23.10.2014
comment
Нет, только этот, к которому я не имею никакого отношения: некоторые пакеты NuGet были установлены с использованием целевой платформы, отличной от текущей целевой платформы, и, возможно, их необходимо переустановить. Посетите docs.nuget.org/docs/workflows/reinstalling-packages, чтобы узнать больше. Информация. Затронутые пакеты: CacheManager.AppFabricCache, CacheManager.Core.   -  person Hélder Gonçalves    schedule 23.10.2014


Ответы (1)


В Ajax.BeginForm нам нужно передать метод в AjaxOptions со свойством HttpMethod, который принимает строку POST или GET:

@using (Ajax.BeginForm("Add", "Home", new AjaxOptions() 
                                      { 
                                        UpdateTargetId = "Result",
                                        HttpMethod="POST" 
                                      }, new { @class = "form-horizontal" }))
{
}

в то время как в Html.BeginForm мы должны передать третий параметр, который является Enum FormMethod, а в случае поста мы используем FormMethod.Post:

@using (Html.BeginForm("Add", "Home",FormMethod.Post, new { @class = "form-horizontal" }))
{
}
person Ehsan Sajjad    schedule 23.10.2014