C# 模型绑定自定义类型

C# 模型绑定自定义类型,c#,asp.net-mvc,defaultmodelbinder,custom-model-binder,C#,Asp.net Mvc,Defaultmodelbinder,Custom Model Binder,我有一个结构,其工作原理与System非常相似。可为null的类型: public struct SpecialProperty<T> { public static implicit operator T(SpecialProperty<T> value) { return value.Value; } public static implicit operator SpecialProperty<T>(T v

我有一个结构,其工作原理与System非常相似。可为null的类型:

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();
    }

}
公共结构特殊属性
{
公共静态隐式运算符T(特殊属性值)
{
返回值;
}
公共静态隐式运算符SpecialProperty(T值)
{
返回新的SpecialProperty{Value=Value};
}
内在价值;
公共T值{get{return internalValue;}set{internalValue=Value;}}
公共覆盖布尔等于(对象其他)
{
返回值。等于(其他);
}
公共覆盖int GetHashCode()
{
返回值。GetHashCode();
}
公共重写字符串ToString()
{
返回值.ToString();
}
}
我正在尝试将其与ASP.NET MVC绑定一起使用。使用默认的客户模型绑定器,属性将始终生成null。我可以通过在每个表单输入名称的末尾添加“.Value”来解决这个问题,但我只希望它使用某种自定义模型绑定器直接绑定到新类型,但我尝试过的所有解决方案似乎都不必要地复杂。我觉得我应该能够扩展默认绑定器,只需几行代码,就可以使用隐式转换将属性绑定重定向到整个模型。我不太了解默认绑定器的绑定范例,但它似乎真的停留在模型和模型属性之间的区别上。最简单的方法是什么?
谢谢

找到了答案。我只需要实现一个自定义类型转换器,默认的模型绑定器就可以实现它。

请告诉我您是如何实现这个自定义类型转换器的。简单地说,它获取泛型参数并将值转换为该类型,然后使用为SpecialProperty的新实例的value属性创建的值。@Jonn我认为这一定是他使用的技术: