Пользовательский тип привязки модели

У меня есть структура, которая очень похожа на тип 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" в конец каждого имени ввода формы, но я просто хочу, чтобы он привязывался к новому типу напрямую с помощью какого-то настраиваемого связывателя модели, но все решения, которые я пробовал, казались излишне сложными . Я чувствую, что смогу расширить связыватель по умолчанию и с помощью нескольких строк кода перенаправить привязку свойства ко всей модели с использованием неявного преобразования. Я не совсем понимаю парадигму привязки связующего по умолчанию, но, похоже, действительно застрял на этом различии между моделью и ее свойствами. Как это сделать проще всего? Спасибо!


person Paul    schedule 15.04.2010    source источник


Ответы (1)


Нашел ответ. Мне просто нужно было реализовать преобразователь настраиваемого типа, и привязка модели по умолчанию подобрала его.

person Paul    schedule 15.04.2010
comment
Пожалуйста, расскажите, как вы реализовали этот конвертер нестандартных типов - person Jonn; 04.10.2011
comment
Достаточно просто, он захватывает общий параметр и вместо этого преобразует значение в этот тип, а затем использует значение, созданное для свойства Value нового экземпляра SpecialProperty. - person Paul; 04.10.2011
comment
@Jonn Я думаю, что это должен быть метод, который он использовал: cyotek. ru / blog / Creating-a-custom-typeconverter-part-1 - person Brian Sweeney; 12.08.2019