【问题标题】:Model Binding Custom Type模型绑定自定义类型
【发布时间】:2011-02-08 10:00:53
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net-mvc defaultmodelbinder custom-model-binder


    【解决方案1】:

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

    【讨论】:

    • 请告诉你如何实现这个自定义类型转换器
    • 很简单,它获取泛型参数并将值转换为该类型,然后使用为 SpecialProperty 的新实例的 Value 属性创建的值。
    • @Jonn 我想这一定是他使用的技术:cyotek.com/blog/creating-a-custom-typeconverter-part-1
    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多