HTTPPost не работает asp mvc 3 - PullRequest
3 голосов
/ 09 марта 2011

Я действительно смущен, вот код:

 [HttpPost]
    public ActionResult Settings(string SubmitButton)
    {
        if (SubmitButton == "Sign In") {
            ServiceLocator.Current.GetInstance<IAppContext>().LoggedUser = null;
            Response.Cookies["loginuser"].Expires = DateTime.Now;
            return RedirectToAction("Logon", "Account");
        }
        if (SubmitButton == "Sign Up") { return RedirectToAction("register", "Account"); }
        if (SubmitButton == "Change Default Ride Settings") { return RedirectToAction("changeSettings", "Home"); }
        return View();
    }

Представление содержит

<% using (Html.BeginForm()) {  %>

   Three input ,

<% } %>

контроллер не запущен с httppost, а запущен с httpget

Ответы [ 5 ]

2 голосов
/ 09 марта 2011

Возможно, вам нужно передать имена контроллеров и действий в Html.BeginForm ().Так как действие [HttpPost] Settings () вызывается для HTTP-запросов на получение, это означает, что не существует другого действия Settings () для запросов на получение, поэтому я предполагаю, что ваше представление обслуживается другим действием.В таком случае вам нужно явно установить контроллер и действие в вашем Html.BeginForm ().Попробуйте это:

<% using (Html.BeginForm("Settings", "YourControllerName")) { %>
2 голосов
/ 09 марта 2011

Вы должны сгенерировать HTML-форму с атрибутом метода, установленным для публикации, если вы хотите, чтобы публикация произошла:

Html.BeginForm("action","controller", FormMethod.Post) { ... }
0 голосов
/ 11 июня 2012

Правильный способ с помощью бритвы

@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { id = "form1" }))
{
   //form content
}
0 голосов
/ 09 августа 2011

Я использовал ActionName () для решения той же проблемы,

Не рабочий код:

[HttpGet]
    public ViewResult RsvpForm()
    {

    [HttpPost]
        public ViewResult RsvpFrom()
        {
        }

Рабочий код:

[HttpGet]
        public ViewResult RsvpForm()
        {
        }
        [HttpPost, ActionName("RsvpForm")]
        public ViewResult RsvpFromPost()
        {
        }
0 голосов
/ 01 июня 2011

Должно быть действие с именем Index () и оно не должно содержать никаких параметров в нем.Это проблема, с которой я столкнулся.

...