ASP.NETMVC2-自定义模型绑定示例有什么推荐吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

我试图找到一些构建我需要处理的唯一绑定场景的自定义模型绑定器的示例,但是我发现的所有文章都是针对MVC2中不再相关的旧版MVC。我一直在引用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){
    //...
}

那是你正在寻找的那种信息吗?

用户回答回答于

扫码关注云+社区