如果這是一個重複,請讓我知道 - 因爲我有一個快速的樣子,找不到任何真正解決我的問題的東西。ASP.NET MVC - 如何創建一個RESTful控制器方案?
我與ASP.NET MVC 2的實驗現在從Web窗體背景的人,我才真正處理HTTP GET和HTTP POST。
我想看看我能申請GET/PUT/POST/DELETE到各自CRUD在我的倉庫操作(查找,插入,更新,刪除)。
說我有一個單獨的控制器,具有以下操作方法:
[HttpGet] // GET: /Products/{id}
[ActionName("Products")
public ActionResult Get(int id = 0) { ... }
[HttpPut] // PUT: /Products
[ActionName("Products")
public ActionResult Put(Product product) { ... }
[HttpPost] // POST: /Products/{product}
[ActionName("Products")
public ActionResult Post(Product product) { ... }
[HttpDelete] // DELETE: /Products/{product}
[ActionName("Products")
public ActionResult Delete(Product product) { .. }
夫婦的上的問題 - 是你將如何命名/ action方法分開?我應該通過整個模型(產品),還是隻是ID?
我遇到的問題是我不知道如何處理調用這些操作方法與我的視圖中的相關HTTP動詞。
在這個階段,我想我會有3瀏覽:
- 「指數」 - 結合
IEnumerable<Product>
模型,列出了所有產品,「編輯」,「詳細信息」和「刪除「鏈接 - 」單個「 - 綁定到單個
Product
模型,列出產品的所有詳細信息,並帶有」更新「按鈕。 - 「新」 - 綁定到單一
Product
模型,與創建產品的形式,與「創建」按鈕。
所以 - 我的問題是,我如何指定我想調用特定的HTTP動詞的特定控制器方法?
使用Html.BeginForm
,您可以指定FormMethod
枚舉 - 但它只有GET和POST。
- 如何執行PUT和DELETE命令?
- 我需要爲每個HTTP動詞分別查看嗎?
- 如果我有一個名爲「刪除」的鏈接,我可以調用一個HTTP DELETE命令給我的控制器,還是需要重定向到一個新的視圖與表單操作刪除?
或者,這是一個愚蠢/矯枉過正的設計,我應該堅持「GET」還是「POST」?
我是(相當)新的這種風格的網絡開發(REST),所以請親切。:)
UPDATE
所以我碰到從斯蒂芬·瓦爾特this有趣的文章,關於這個題目。他表示一個HTML表單只支持GET和POST(因爲我是REST風格的網頁開發的新手,我甚至不知道這一點,對此我感到部分慚愧)。
顯然,使用PUT/DELETE調用Controller操作的唯一方法是使用AJAX來完成。真的嗎?
那麼我應該在這裏做什麼,我應該堅持GET/POST,還是我應該創建一個JavaScript文件,其中包含基礎XmlHttpRequest代碼後面的一個很好的功能?
ASP.NET MVC開發人員傾向於哪種方式?當然有人問自己同樣的問題。
不知道GET和POST是HTML表單的唯一廣泛支持,非常常見,所以不要驚慌,你不知道它:) – eglasius 2010-09-24 06:09:48