我已經開始使用MvcContrib的便攜式區域,並且對於非常簡單的視圖,一切正常,但是當我想要在我的視圖中使用自定義模型時,我會看到表示命名空間不存在的錯誤。ASP.NET MVC 3 - 便攜式區域視圖找不到我的模型
視圖設置爲嵌入資源。在視圖中的intellisense認可模型就好了。
有沒有人有任何想法可能會導致問題?
UPDATE
我想可能有這樣的事實,我使用MEF加載插件做。加載控制器時,我遇到了類似的問題。如果默認controllerfactory沒有找到合適的控制器,我必須構建一個自定義的ControllerFactory,它將查看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