2016-12-15 114 views
1

我在做這個項目,目前有如下方法控制行動:ASP.NET MVC後,從同一個控制器

[HttpPost] 
public ActionResult Service(string identifier) 

此功能目前正在使用的網頁形式

<form method="POST" action="/Connector/Service"> 
<input type="hidden" id="identifier" name="identifier" value="@TempData["Identifier"]"/> 

所以當用戶點擊一個在網頁上提交表單的按鈕時就會使用服務。用戶從另一個操作轉到此頁面。 我必須實現一個功能,有時用戶不必將用戶帶到網頁,而是直接從操作中直接訪問服務方法。 ASP.NET MVC: RedirectToAction with parameters to POST Action

但好像那是糟糕的設計和返回RedirectToAction與服務實際上並沒有爲我工作:

我搜索的時候發現了這個線索。

return RedirectToAction("Service", new {identifier}) 

更多搜索似乎我實際上不能從我的控制器發出發佈請求。 Asp.NET MVC : redirect to another controller with POST Action

什麼,我可以在這裏做任何想法?我對ASP.NET相當陌生,不知道該怎麼做。所有的幫助表示讚賞,謝謝。

+0

我同意這是不好的設計。 ''有時不用把用戶帶到網頁上'' - 什麼是**有時是**?這是缺少的一塊這裏 –

+1

您調用重定向到操作的方式是發送GET請求。但是你的方法被標記爲僅POST – Steve

+1

http://stackoverflow.com/questions/129335/how-do-you-redirect-to-a-page-using-the-post-verb你應該閱讀接受的答案,並看到@Jasonbunting怎麼做 – ergen

回答

1

所以原來我可以做

Service(identifier) 

我一直在想我不得不使用RedirectToAction,這樣甚至沒有穿過我的腦海裏直接調用該函數。

感謝Sherlock的答案!

0

當窗體被視圖本身submited [文章]僅用於標籤,如果你的頁面重定向到一個控制器上的功能,從另一種觀點認爲一個比你的,你有兩個選擇:

  1. 使用[get]標籤,雖然我不清楚它是如何工作的(這可能會被編輯),但使用[get]標籤可能會帶來更大的運氣

  2. 如果您使用參數重定向另一個視圖爲具有參數的功能,如public ActionResult Service(string identifier)表示沒有標籤,則會自動達到此功能。

    如果該參數沒有被指定,它將只是NULL。

+0

對於#2,如果我帶走郵政標籤將視圖仍然能夠提交? –

+0

@SWWilliams不,如果刪除POST,除非將表單方法更改爲GET,否則無法提交數據。 GET用於檢索遠程數據,而POST用於插入/更新遠程數據。 – mluker

+0

是否有可能允許函數同時處理POST和GET請求? –