模型绑定自定义类型

模型绑定自定义类型

问题描述:

我有一个结构,其工作原理非常类似于System.Nullable类型:模型绑定自定义类型

public struct SpecialProperty<T> 
{ 
    public static implicit operator T(SpecialProperty<T> value) 
    { 
     return value.Value; 
    } 
    public static implicit operator SpecialProperty<T>(T value) 
    { 
     return new SpecialProperty<T> { Value = value }; 
    } 

    T internalValue; 
    public T Value { get { return internalValue; } set { internalValue = value; } } 

    public override bool Equals(object other) 
    { 
     return Value.Equals(other); 
    } 
    public override int GetHashCode() 
    { 
     return Value.GetHashCode(); 
    } 
    public override string ToString() 
    { 
     return Value.ToString(); 
    } 

} 

我试图用ASP.NET MVC结合使用。使用默认的客户模型绑定器,该属性将始终为空。我可以通过在每个表单输入名称的末尾添加“.Value”来解决此问题,但我只是希望它使用某种自定义模型绑定器直接绑定到新类型,但我尝试过的所有解决方案似乎都是不必要的复杂。我觉得我应该能够扩展默认联编程序,并用几行代码将属性绑定重定向到使用隐式转换的整个模型。我没有完全得到默认绑定器的绑定范例,但它似乎确实卡住了模型和模型属性之间的区别。什么是最简单的方法来做到这一点? 谢谢!

找到了答案。我只需要实现一个自定义类型转换器,并且默认的模型绑定器将其拾取。

+0

祈祷告诉你如何实现这个自定义类型转换器 – Jonn 2011-10-04 08:13:00

+1

简单来说,它抓取泛型参数并将值转换为该类型,然后使用为SpecialProperty的新实例的Value属性创建的值。 – Paul 2011-10-04 15:12:59