2011-08-12 43 views
1

如何讓HttpPost工作?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」 ...不是嗎?

爲什麼只重定向到「GET」?

請幫忙!

+0

你如何提交表格?在表單中是否有任何輸入被髮回到服務器? – RoccoC5

+0

我建議你閱讀關於GET和POST的內容,因爲你顯然很困惑。否則,由你的問題困惑。 – RPM1984

回答

1

如果通過「第一次操作視圖」,您的意思是用戶在瀏覽時第一次看到的表示「http://www.mysite.com/Admin/TextAction」。當您在地址欄中鍵入內容並鍵入回車,或者當您點擊正常的<a>鏈接時,始終使用GET。

發起帖子動作的最常見方式是讓用戶點擊method屬性設置爲POST的表單的某個提交按鈕。

0

那麼......它應該在第一個動作中寫「POST」查看...不是嗎?

正如alun在上面指出的那樣,沒有。我認爲麻煩在於你對HTTP協議工作原理的假設;讀一下它可能是一個好主意。除了閱讀之外,獲得一些實用見解的好方法是使用類似FireBug的東西,並在「網絡」選項卡下進行檢查。您會在發生GET時和POST時看到它們。

0

問題是,當您要求向您呈現表單時,您正在從服務器獲取數據,但是當您填寫表單並將其發送回服務器時,您正在發送數據。因此,如果您沒有提交表格,那麼在您的案例中說GET就是正常的。在您提交表單的那一刻,瀏覽器將啓動POST方法,您的Post版本的操作將被調用。