何时使用Custom ModelBinder?

时间:2014-07-24 15:12:15

标签: asp.net-mvc model-binding

在过去的几天里,我一直在Custom ModelBinders刷新我的MVC技能。简单地说,我从来没有机会创建一个因为我从未遇到过符合条件或要求我创建自定义ModelBinder的场景。

我在How to...上看到并阅读了很多示例,但我没有看到的是Why to...

上的相关示例

也许我看起来不够努力。

考虑一个我发现程序员有以下ViewModel的例子:

public class HomeViewModel
    {
        public string Title { get; set; }
        public string Date { get; set; }
    }

视图在HomeViewModel上强列表,并且还有3个附加字段,如下所示:

<form id="myForm" method="POST">
    Day: <input id="Day" name="Day" value="" type="text" />
    Month: <input id="Month" name="Month" value="" type="text" />
    Year: <input id="Year" name="Year" value="" type="text" />

    <input id="Submit" type="Submit" value="Submit" />
</form>

程序员决定创建一个自定义ModelBinder,以便在提交<form>时,捕获3个字段并将其放置/格式化在{{1}的Date属性中}}

我理解这个想法,但我不明白为什么要通过创建自定义ModelBinding的所有麻烦,更重要的是,不要忘记在Application_Start()中注册它,而不是,我可以简单地修改{{ 1}}通过添加3个字段并捕获Date属性中的所有内容,如下所示:

HomeViewModel

(不用说,我必须修改我的HomeViewModel,但这很简单......)

除非我遗漏了某些东西,否则人们就会有更好的理由来加倍努力来创建自定义的ModelBinder。

如果有人可以分享可以保证创建Custom ModelBinder的想法或想法,我会很高兴听到它。

此致

1 个答案:

答案 0 :(得分:0)

我使用自定义模型绑定器的原因有几个

这是我过去使用过的一个例子

http://www.codeproject.com/Articles/519301/Automatic-Encryption-of-Secure-Form-Field-Data

另一种情况是,如果你想绑定接口并对结果进行后期绑定,Mvc不支持开箱即用,你可以写一个模型绑定器来做到这一点