我有一个类似于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绑定一起使用。使用默认客户模型绑定器,该属性将始终为null。我可以通过在每个表单输入名称的末尾添加“.Value”来解决这个问题,但我只是希望它使用某种自定义模型绑定器直接绑定到新类型,但我尝试的所有解决方案似乎都是不必要的复杂。我觉得我应该能够扩展默认绑定器,并使用几行代码使用隐式转换将属性绑定重定向到整个模型。我没有完全得到默认绑定器的绑定范例,但它似乎真的坚持模型和模型属性之间的这种区别。这样做最简单的方法是什么? 谢谢!
答案 0 :(得分:3)
找到答案。我只需要实现一个自定义类型转换器,默认的模型绑定器就可以了。