代码之家  ›  专栏  ›  技术社区  ›  Paul

模型绑定自定义类型

  •  2
  • Paul  · 技术社区  · 14 年前

    我有一个结构的工作方式与System非常相似。可以为空的类型:

    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”来解决这个问题,但我只希望它使用某种自定义模型绑定器直接绑定到新类型,但我尝试的所有解决方案似乎都不必要地复杂。我觉得我应该能够扩展默认的绑定器,并用几行代码通过隐式转换将属性绑定重定向到整个模型。我不太了解默认绑定器的绑定范例,但它似乎确实坚持了模型和模型属性之间的这种区别。最简单的方法是什么? 谢谢!

    1 回复  |  直到 12 年前
        1
  •  3
  •   Paul    14 年前

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