2010-07-28 69 views
0

當我從許多MVC資源中查看更多代碼和博客文章時,我仍然沒有將自己的想法包括在做出請求時「發佈」的內容。我意識到MVC不支持發佈,但是我很難找到足以理解的資源。ASP.NET MVC應用程序中的「發佈」是什麼?

控制器內部public ActionResult nameOfAction(what the heck goes here?) { ... }我的參數是什麼?

有時它看起來像Visual Studio腳手架(int id, MyObject myobject)的編輯風格的動作 - 它包括我的模型,但並不總是。

有時候,它是(int id, FormCollection collection)的刪除式操作。爲什麼不在這裏使用建模對象? FormCollection對象總是「張貼」?

有時候,我看到(RouteInfo routeInfo)這是不是我的MVC2智能感知認識(這是唯一MVC1什麼?)

如何/做/我應該確定這些參數?我認爲這在設計時會幫助我很多。

回答

2

從MVC中的表單返回的內容是包含鍵值對中每個表單元素的表單數據。

如果你只需要這些信息,那麼你可以使用:

public ActionResult nameOfAction(string name, string lastName, string etc) 

MVC有一些聰明的數據模型,結合其採取的形式數據,並自動創建一個對象,它是域模型的你的一部分。例如,它可以使用提供的表單數據自動創建一個Person對象。

我相信這是一個安全問題,因爲您的網站用戶可能會發布不屬於您表單的數據,並猜測您的模型將注入自己的數據。 我不認爲這是一個大問題,但這是我的方式。

我認爲你可以使用防僞助手來防止用戶發佈不允許在表單中的數據。 anti-forgery

+0

我假設名字,姓氏,等等都是某種輸入元素的ID?那麼,我只能使用我需要的字段ID,或者'FormCollection'對象來避免在方法的簽名中過多地命名參數? – 2010-07-29 14:01:34

1

對視圖模型和強類型幫助程序使用強類型視圖。然後當你開機自檢時,你應該得到一個視圖模型的實例。

+0

如果我不總是使用強類型視圖怎麼辦?我不一定明白爲什麼我不會,但爲什麼默認的Delete方法使用FormCollection而不是MyObject作爲參數?有沒有相當於RouteInfo的MVC2? – 2010-07-28 16:30:59

+0

表單集合只是用模型綁定表示數據的一種方式。如果沒有強類型視圖,我不確定模型綁定的效果如何。 – 2010-07-28 16:32:56

+0

進入視圖的數據如何確保您從視圖中獲取強類型數據? – 2010-07-28 23:56:32

相關問題