我试图找到一些为我需要处理的独特绑定场景构建自定义模型绑定程序的示例,但我找到的所有文章都是针对旧版本的 MVC,这些版本在 MVC2 中不再相关。我一直在参考 DefaultModelBinder 源代码,试图对我需要做的事情有一个总体的感觉,但它比我的场景要复杂得多,而且我在隔离我需要实现的特定逻辑时遇到了麻烦。

我的目标是获取复选框/文本框对的集合,对于所有选中的对,我想创建复选框值和关联文本框值的键/值对。聚合这些数据后,我需要对集​​合进行一些字符串序列化,以便可以将其存储在所需模型类型的字符串属性中。我已经以可管理的格式从表单发送数据,这将允许我将给定的复选框与特定的文本框相关联,这只是弄清楚如何获取我需要的所有部分的问题。

有谁知道一些可以帮助我开始构建自定义模型绑定程序的最新教程?

有帮助吗?

解决方案

我不知道你为什么想既然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){
    //...
}

是,这类信息你正在寻找?

其他提示

看看几个例子 自定义 MVC 模型绑定器 在我的博客上。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top