我已经开始使用 MvcContrib 的 Portable Areas 并且对于非常简单的视图一切正常,但是当我想在我的视图中使用自定义模型时,我收到错误说命名空间不存在。
视图设置为作为资源嵌入。视图中的智能感知可以很好地识别模型。
有谁知道可能导致问题的原因?
更新
我认为这可能与我使用 MEF 加载插件的事实有关。加载控制器时我遇到了类似的问题。如果默认控制器工厂没有找到合适的控制器,我必须构建一个自定义控制器工厂,该控制器工厂将在 MEF 控制器列表中查找。
更新 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