首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NET MVC2 -自定义模型绑定器示例

ASP.NET MVC2 -自定义模型绑定器示例
EN

Stack Overflow用户
提问于 2010-02-27 02:30:37
回答 2查看 16.1K关注 0票数 16

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

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

有没有人知道一些最新的教程,可以让我开始构建一个自定义模型绑定器?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-27 02:50:21

我不知道为什么您认为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){
    //...
}

这就是你要找的信息吗?

票数 12
EN

Stack Overflow用户

发布于 2012-02-09 16:20:02

在我的博客上可以看到几个Custom MVC Model binders的例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2343913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档