HTTPPost无法运行asp mvc 3

时间:2011-03-09 14:50:15

标签: c# asp.net-mvc-2 asp.net-mvc-3 http-post

我真的很困惑, 这是代码:

 [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 个答案:

答案 0 :(得分:2)

如果您希望发布帖子,则必须生成一个html表单,并将method属性设置为post:

Html.BeginForm("action","controller", FormMethod.Post) { ... }

答案 1 :(得分:2)

您可能需要在视图中传入Html.BeginForm()中的控制器和操作名称。由于正在为HTTP get请求调用[HttpPost] Settings()操作,这意味着没有针对get请求的另一个Settings()操作,因此我猜测您的视图是通过其他操作提供的。在这种情况下,您需要在Html.BeginForm()中显式设置控制器和操作。试试这个:

<% using (Html.BeginForm("Settings", "YourControllerName")) { %>

答案 2 :(得分:0)

应该有名称为Index()的操作,并且不应包含任何参数。这是我遇到的问题。

答案 3 :(得分:0)

我使用ActionName()来解决同样的问题,

不工作代码:

[HttpGet]
    public ViewResult RsvpForm()
    {

    [HttpPost]
        public ViewResult RsvpFrom()
        {
        }

工作代码:

[HttpGet]
        public ViewResult RsvpForm()
        {
        }
        [HttpPost, ActionName("RsvpForm")]
        public ViewResult RsvpFromPost()
        {
        }

答案 4 :(得分:0)

使用剃刀的正确方法

@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { id = "form1" }))
{
   //form content
}