2008-11-07 62 views
7

我將我的web應用程序從預覽3轉換爲beta1,現在正在嘗試使用框架的新功能。其中之一是ModelBinding。ModelBinding in asp.net mvc Beta1

對於這種特殊情況,我創建了一個類(現在)只是一堆簡單類型屬性的容器。 如果我用一堆文本框創建表單,我希望框架用這些字段填充SearchBag實例。

  • 我從哪裏開始?這種行爲 開箱即用,還是我實施了 SearchBagBinder?我在IModelBinder上快速瀏覽了 ,但不能完全打包我的頭, DefaultModelBinder源不是 讓我變得更聰明。
  • 這是什麼ModelBindingContext?
  • 如何訪問我的表單域?
  • 如果數值不是通過 通過表單傳遞,而是直接通過輸入 URL會怎樣?
  • 我在哪裏可以找到最新的 信息(大多數博客是 過時的)?我以爲我曾經一次讀過菲爾的帖子 ,但我不能 似乎找不到它了。

任何幫助表示讚賞。

+0

3票,兩顆星,沒有答案:( – 2008-11-07 12:09:36

+0

3票,因爲3人認爲這是一個很好的問題,2星,因爲2人作爲最喜歡的問題,並追蹤回覆 – TheCodeJunkie 2008-11-07 21:02:09

回答

3
  • 從哪裏開始?這種行爲 開箱即用,還是我實施了 SearchBagBinder?我在IModelBinder上快速瀏覽了 ,但不能完全打包我的頭, DefaultModelBinder源不是 讓我變得更聰明。

開箱即用。你可以使用UpdateModel或ModelBinder來實現你想要做的事情。

  • 這是什麼ModelBindingContext?

這包含請求綁定到您的模型的所有必要信息。類似ControllerContext和ActionFilterContext,它基本上是ModelBinder的狀態,幷包含所有必要的信息,做你想做的,如果你遵循什麼ModelBinder的是應該做的ASP.NET MVC團隊的建議。

  • 如何訪問我的表單域?
context.HttpContext.Request.Forms["myformfield"]; 

foreach (var field in context.HttpContext.Request.Forms.Keys) { 
    var value = context.HttpContext.Request.Forms[field]; 
} 
  • 如果什麼值不受窗體上 傳遞,而是通過直接輸入網址 ?

如果您需要檢查Form和QueryString,只需循環兩個集合即可。

foreach (var field in context.HttpContext.Request.Forms.Keys) { 
    var value = context.HttpContext.Request.Forms[field]; 
} 
foreach (var field in context.HttpContext.Request.QueryStrings.Keys) { 
    var value = context.HttpContext.Request.QueryStrings[field]; 
} 

,或者您可以通過帕拉姆將包含表格,查詢字符串,頁眉等循環

foreach (var field in context.HttpContext.Request.Params.Keys) { 
    var value = context.HttpContext.Request.Params[field]; 
} 
  • 我在哪裏可以找到關於這件事最新 信息* (大部分博客都是 過時)?我以爲我一次讀Phill的帖子 ,但我不能 似乎找不到它。

你說得對嗎Phil是ASP.NET MVC的PM的最佳信息來源。