Asp.net-Mvc

ASP.NET MVC2 - 自定義模型綁定範例

  • February 9, 2012

我試圖找到一些為我需要處理的獨特綁定場景建構自定義模型綁定器的範例,但是我發現的所有文章都是針對舊版本的 MVC,它們在 MVC2 中不再相關。我一直在參考 DefaultModelBinder 原始碼,試圖大致了解我需要做什麼,但它比我的場景更複雜,而且我在隔離我需要實現的特定邏輯時遇到了麻煩。

我的目標是收集 Checkbox/Textbox 對的集合,對於所有 Checked 對,我想為 Checkbox 的值和關聯的 Textbox 的值創建一個鍵/值對。聚合這些數據後,我需要對集合進行一些字元串序列化,以便將其儲存在所需模型類型的字元串屬性中。我已經以可管理的格式從表單發送數據,這將允許我將給定的複選框與特定的文本框相關聯,這只是弄清楚如何在我需要的地方獲取所有部分的問題。

有誰知道一些可以讓我開始建構自定義模型綁定器的最新教程?

我不知道為什麼您認為自 MVC 1 以來關於自定義模型綁定器發生了很大變化。但是,如果我了解您要做什麼,那應該很容易。

public class CustomModelBinder : DefaultModelBinder {
   public override object BindModel(ControllerContext controllerContext, 
       ModelBindingContext bindingContext) {

       NameValueCollection form = controllerContext.HttpContext.Request.Form;
       //get what you need from the form collection

       //creata your model
       SomeModel myModel = new SomeMode();
       myModel.Property = "value";
       //or add some model errors if you need to
       ModelStateDictionary mState = bindingContext.ModelState;
       mState.Add("Property", new ModelState { });
       mState.AddModelError("Property", "There's an error.");

       return myModel; //return your model
   }
}

而你的行動:

public ActionResult Contact([ModelBinder(typeof(CustomModelBinder))]SomeModel m){
   //...
}

那是您要查找的資訊嗎?

引用自:https://stackoverflow.com/questions/2343913