MVC 3 [HttpPost]

时间:2011-08-12 04:26:56

标签: c# asp.net-mvc-3

如何让HttpPost工作?

我写了以下行动来接收我的表格:

    [Authorize]
    [HttpPost]
    public ActionResult TextAction()
    {
        ViewBag.Title = "POST";
        return View();
    }

    [Authorize]
    public ActionResult TextAction(string title)
    {
        ViewBag.Title = "GET";
        return View();
    }

表格:

@using (Html.BeginForm("TextAction", "Admin", FormMethod.Post)){...}

嗯......它应该在第一个动作中写“POST”View ...不是吗?

为什么它只重定向到“GET”?

请帮忙!

3 个答案:

答案 0 :(得分:1)

如果通过“第一个操作视图”表示用户在浏览时首先看到的那个“http://www.mysite.com/Admin/TextAction”。当您在地址栏中输入内容并输入回车或点击普通<a>链接时,总会使用GET。

启动帖子操作的最常用方法是让用户单击某个表单,其中method属性设置为POST

答案 1 :(得分:0)

  

嗯......它应该在第一个动作中写“POST”View ...不是吗?

正如alun在上面指出的那样,没有。我认为麻烦在于您对HTTP协议如何工作的假设;阅读它可能是一个好主意。除了阅读之外,获得一些实用见解的好方法是使用类似FireBug的内容,并在“网络”标签下查看。你会看到GET和POST发生的时间。

答案 2 :(得分:0)

问题在于,当您要求向您呈现表单时,您正在从服务器获取数据,但是当您填写表单并将其发送回服务器时,您正在发布数据。因此,如果您没有提交表格,在您的情况下说GET是正常的。提交表单的那一刻,浏览器将启动POST方法,并且将调用您的Post版本的操作。