2011-08-03 14 views
1

私はMvcContribのポータブルエリアを使用し始めました。非常に単純なビューではすべて正常に動作しますが、私のビューでカスタムモデルを使用したいとき名前空間が存在しないというエラーです。ASP.NET MVC 3 - ポータブルエリアビューでモデルが見つかりません

ビューはリソースとして埋め込まれるように設定されています。そしてこのビューのインテリセンスはモデルをうまく認識します。

問題の原因は何ですか?

UPDATE

私はそれは私がプラグインをロードするためにMEFを使っているという事実としなければならないかもしれないと思います。私はコントローラをロードするときに同様の問題がありました。適切なコントローラーがデフォルトのcontrollerfactoryによって見つからなかった場合は、MEFコントローラーリストを表示するカスタムControllerFactoryを構築しなければなりませんでした。

UPDATE 2

私はMEF-ロードアセンブリとRazorBuildProviderを提供することにより、エラーを取り除くことができました。しかし、今はもう見えません。ビューが強く型付けされていない場合は、それが見つかります。

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 

答えて

0

私は最終的にはなく、独自のプラグインディレクトリのbinディレクトリにあるすべてのプラグインを配置することを決めました。それは私が目指していた解決策ではありませんが、今のところうまくいきます。

1

私はMEF &かみそりビューエンジンで同様の問題に直面しています(同様のアプローチを試してみてください)。強く型付けされたかみそりビューを読み込むと、 "あなたはアセンブリ/参照がありません"というエラーが出ます。

私はBinの下にアセンブリを配備しようとしましたが、その助けもありませんでした。

これを避けるには、RazorBuildProviderでloadFromアセンブリを実行するしかありません。

私は

あなたしているコードスニペットは、非常に興味深いものである「、コードから直接使用するためのものではない」以外のRazorBuildProvider上の任意のドキュメントを見つけることができませんでした...あなたはそれがどのように動作するか説明してくださいすることができます?これはAppStartでどこに登録される予定ですか?

RazorBuildProvider.CodeGenerationStarted += (object sender, EventArgs e) => 
{ 
    RazorBuildProvider provider = (RazorBuildProvider)sender; 
    foreach (var module in ExternalComponents) 
    { 
     provider.AssemblyBuilder.AddAssemblyReference(module.GetType().Assembly); 
    } 
}; 
どれ透明性がはるかに高く評価されるだろう

...

関連する問題