Я начал использовать Переносимые Области MvcContrib, и все работает отлично для очень простых представлений, но когда я хочу использовать пользовательскую модель в моем представлении, я получаю сообщение об ошибке, говоря, что пространство имен не существует.
Представление установлено, чтобы быть встроенным в качестве ресурса.И Intellisense в представлении распознает модель просто отлично.
Кто-нибудь есть какие-либо идеи, что может вызвать проблему?
ОБНОВЛЕНИЕ
Я думаю, это может быть связано с тем, что я использую MEF для загрузки плагинов.У меня была похожая проблема при загрузке контроллеров.Мне пришлось создать собственную ControllerFactory, которая бы выглядела в списке контроллеров MEF, если фабрика по умолчанию не нашла подходящий контроллер.
UPDATE 2
Мне удалось избавиться от ошибки, предоставив RazorBuildProvider с моими MEF-загруженными сборками.Однако теперь вид уже не найден.Если представление не является строго типизированным, оно найдено.
RazorBuildProvider.CodeGenerationStarted += (object sender, EventArgs e) =>
{
RazorBuildProvider provider = (RazorBuildProvider)sender;
foreach (var module in ExternalComponents)
{
provider.AssemblyBuilder.AddAssemblyReference(module.GetType().Assembly);
}
};
Исходный код
Модель
namespace Isis.Plugins.TextArea.TextArea.Models
{
public class TextAreaModel
{
[Required(ErrorMessage = "Field is required")]
public string Message { get; set; }
}
}
Контроллер:
namespace Isis.Plugins.TextArea.TextArea.Controllers
{
[Export(typeof(IController))]
public class IndexController : Controller
{
[HttpGet]
public ActionResult Index()
{
return View(new TextAreaModel() { Message = "Hallow!" });
}
[HttpGet]
public ActionResult Editor()
{
return View(new TextAreaModel() { Message = "EDITOR CONTENT" });
}
}
}
Вид
@model Isis.Plugins.TextArea.TextArea.Models.TextAreaModel
@Model.Message
Ошибка:
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0234: The type or namespace name 'Plugins' does not exist in the namespace 'Isis' (are you missing an assembly reference?)
Source Error:
Line 27:
Line 28:
Line 29: public class _Page_Areas_TextArea_Views_Index_Index_cshtml : System.Web.Mvc.WebViewPage<Isis.Plugins.TextArea.TextArea.Models.TextAreaModel> {
Line 30:
Line 31: #line hidden