2010-10-07 2 views
1

Возможно ли каким-то образом использовать инъекцию зависимостей в Asp.net MVC 3 (используя Forms ViewEngine) для ввода UserControls из другой библиотеки? Я уже использую MEF для загрузки некоторых других вещей в свой MvcApplication.Asp.net MVC 3 вставляет UserControl для TemplateHint

Мне нужно это, потому что я хочу построить систему с расширяемой системой типов. Я хочу, чтобы поставщик типа мог вводить настраиваемые элементы управления для предоставленного типа. У меня уже есть пользовательский MetadataProvider, который знает, как обрабатывать предоставленные типы (он устанавливает свойство ModelMetadata.TemplateHint).

Вопрос заключается в том, где я могу подключить с MEF, так что TemplateHint получает надлежащим образом, и пользовательский контроль на экран отображается caling Html.EditorForModel

ответ

2

Я не могу придумать способ сделать это с помощью текущую инфраструктуру локатора служб в бета-версии MVC 3. Я могу подумать о 2 альтернативных оценках:

  1. Имейте шаблон редактора, который вместо предоставления делегатов HTML вашим пользовательским элементам управления и возвращает их вывод.
  2. Напишите свой собственный ViewEngine, который может выполнять поиск для частичных представлений (пути будут иметь форму «EditorTemplates/YourTypeName» и т. Д.) И вернуть представление, которое знает, как разговаривать с вашими настраиваемыми элементами управления.
+0

Привет, я только что реализовал свой собственный ViewEngine. Мне просто нужно было реализовать IViewEngine.FindPartialView, проанализировать идентификатор настраиваемого типа из аргумента partialViewName и делегировать рендеринг обратно на пользовательский тип. Так что ваш ответ правильный: – m0sa

+1

Я уверен, что # 2 - это именно то, что вы описали :) – marcind