Это - действительно ограничительная проблема решения. Можно сделать это с обобщенным видом ограничительного распространения в логическом программировании как языки. У нас есть демонстрация специально для проблемы Зебры под мухой (припишите логический механизм), система:
http://www.cs.toronto.edu/~gpenn/ale.html
Вот ссылка на кодирование упрощенной загадки Зебры:
http://www.cs.toronto.edu/~gpenn/ale/files/grammars/baby.pl
, Чтобы сделать это эффективно - другой вопрос.
ScottGu объясняет это в своем блоге о MVC V2 .
Насколько я понимаю, это создаст входные данные для каждого из свойств объекта, которому вы передаете помощник. Итак, если у вас есть объект:
public class Customer
{
public string Name { get; set; }
[UIHint("MyCoolCalendar")]
public DateTime CoolDate { get; set; }
}
А затем создайте редактор:
<%= Html.EditorFor(customer => customer) %>
Он создаст текстовый ввод для имени клиента и MyCoolCalendar (который является настраиваемым элементом управления) для CoolDate без необходимости писать настраиваемый элемент управления для обертывания всего объекта. Он автоматически определяет тип элемента управления из типа / uihint свойства. По крайней мере, это так, как я понял, еще не имея времени проверить это.
Вот один пример, который, как мне показалось, работает хорошо.
Допустим, у вас есть клиент с адресом. Вы не можете создать адрес для НОВОГО клиента, но с помощью ассоциации у вас может быть объект «Клиент» с полем «Адрес».
Затем в своем методе «Создать» для клиента вы вызываете Html.EditorFor (c => c.Address);
(и здесь вы можете создать собственный шаблон для своих нужд), который произведет полностью заполненный Адресный объект, который вы можете сохранить перед Клиентом, тем самым разрешив зависимость.
Теперь, когда у вас есть справочные данные, такие как список стран или штатов, или что-то еще, может быть лучше просто использовать частичное представление для его визуализации и не беспокоиться об ассоциации.
Надеюсь, это поможет,
-vlad