2008-12-19 85 views
0

我有一個id使用ModelBinder的由ID獲取對象

public ActionResult Get(int? id) { 
... 
} 

public ActionResult Delete(int id) { 
... 
} 

public JsonResult GetJson(int? id) { 
... 
} 

我想它的最佳實踐,在每個動作使用模型綁定器(SomeObjectFromIDModelBinder)多個控制器動作,所以獲得的對象與控制器分離,並保持較小的操作方法。

我不希望它被稱爲SomeObjectModelBinder的原因是因爲我也需要從JSON重新創建模型,所以有一個SomeObjectFromJsonModelBinder來處理從JSON字符串重新創建'SomeObject'。

我在想這是ModelBinders(命名約定)的一個合適用法,但只是想澄清。思考?

+0

如果你的代碼示例顯示了你想要做的事情,比如public ActionResult Get(SomeObject someObject)而不是...(int?id),那麼這個問題可能更容易理解。現在有一個模型綁定器是有意義的,因爲您將使用ModelBinder從它們的id創建SomeObject,而不是將int傳遞到操作方法中。 – 2010-02-08 01:05:53

回答

0

我決定可以接受我所要求的,並且有多個ModelBinder將不同的數據綁定到一個Model。

0

你不需要做任何事情就可以得到身份證。 MVC處理程序將查找與表單數據,查詢字符串和路由中的方法參數相同名稱的簡單值。 所以你可以有一個路徑/ {控制器}/{動作}/{id},默認動作=「Get」,id = 1。 然後該id可以在URL中指定爲/ Home/Get/3或/ Home/Delete?id = 6。

或者,您也可以使用ID爲「id」的ID和提交按鈕的文本框來發布到「/ Home/Get」。

ModelBinders旨在允許您通過創建實例並填充表單數據,查詢字符串或路由數據中的特性,從而使操作方法爲類。

+0

我知道這一點。我想要的是爲我提供SomeObject而不是整數ID的動作方法,在控制器中的多個動作中刪除重複的代碼。我之後如果有多個modelbinders是正確的對於單個對象和活頁夾的命名約定 – 2008-12-20 00:11:53