Пользовательский тип привязки модели - PullRequest
2 голосов
/ 15 апреля 2010

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

1 Ответ

3 голосов
/ 16 апреля 2010

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

...