2017-10-06 50 views
0

我試圖重定向到從另一個POST方法POST方法POST方法,但似乎它試圖通過獲取重定向:嘗試重定向到從另一個

[HttpPost] 
[Route("Users/NewUser")] 
[SystemAuthorize(PermissionForm = Form.USERS, Permissions = PermissionValue.EDIT)] 
public ActionResult NewUser(ConsultUserModel m) //This is called from Consult View by post 
{ 
    Debug.WriteLine("I'm here post"); 
    UserInfoModel model = GetUserInfoModel(); 
    return RedirectToAction("Edit", model); 
} 

[HttpPost] 
[Route("Users/Edit")] 
[SystemAuthorize(PermissionForm = Form.USERS, Permissions = PermissionValue.EDIT)] 
public ActionResult Edit(UserInfoModel edit) 
{ 
    return View(edit); 
} 

當我打電話的行動結果服務器錯誤:

enter image description here

+1

可能的重複[如何使用POST動詞重定向到頁面?](https://stackoverflow.com/questions/129335/how-do-you-redirect-to-a-page-using-the -post-verb) – Diado

+1

「Post」應該改變服務器上的狀態。如果誤用,POST重定向看起來很危險。它本身不應該被瀏覽器支持 –

+0

瀏覽器讓請求 – arslanaybars

回答

1

正如已經提到過的那樣,您不能通過設計重定向帖子。

現在,我將提出一個解決問題的方法:

在我看來,像你正在創建一個新用戶,然後將用戶重定向到他們可以編輯自己的信息的地方。登陸操作不需要使用帖子。從那個中刪除[HttpPost],你應該很好去。

有另一個使用[HttpPost]並處理更新的操作。

如果您確實想要保存屬性,請將用於更新用戶信息的代碼抽象爲私有方法,並從兩個位置調用它。

+0

我該如何避免url上的__RequestVerificationToken? – Dener

+0

__RequestVerificationToken是我假定您正在使用的ValidateAntiForgeryToken屬性所必需的。另一種方法是從'NewUser'操作中返回'Edit'視圖,而不是重定向。 – JuanR

+0

我已經這麼做了,不幸的是,我需要將模型傳遞給視圖,因爲它負責處理來自數據庫的一些數據以填充視圖的下拉列表。這就是爲什麼我要在URL上獲得RequestVerificationToken。我希望我可以從控制器中獲取這些數據,而不是從模型中獲取。 – Dener

0

重定向到打擊作爲一個POST沒有意義的目標。重定向是通過向鏈接重定向到瀏覽器返回302響應來完成的。然後瀏覽器進行GET,這就是你所看到的。

相關問題