2011-12-22 7 views
2

私はVdexとしてここに提案しました: https://stackoverflow.com/a/5801502/973485 そして彼が見つけたRenderPartialToStringメソッドを使用しました。そして、それは次のように完璧に動作します:他のコントローラからの文字列への表示

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
    public ActionResult Test() 
    { 
     string t = ViewToString.RenderPartialToString("Index", null, ControllerContext); 
     return Content(t); 
    } 
} 

しかし、私は別のコントローラからホーム>インデックスをレンダリングしたい場合は、私が取得:このように

Value cannot be null. 
Parameter name: controllerContext 

を:

public class FooController : Controller 
{ 
    public ActionResult Index() 
    { 
     string t = ViewToString.RenderPartialToString("Index", null, new HomeController().ControllerContext); 
     return Content(t); 
    } 
} 

があります別のコントローラから文字列にビューを渡す方法はありますか?私は多くの異なるメソッドを試しましたが、すべてがControllerContextで失敗します。どうもありがとう!

アップデート:私はこれを行うために必要な理由:

私はウィジェットの完全なウェブサイトを持っている想像し、各ページ上のウィジェットの量は動的であるので、私は私のCSHTMLファイルでそれらをハードコーディングすることはできません。しかし、そのファイルには、ウィジェットがプリントアウトする場所が定義されています。これらのウィジェットを印刷するには、使用可能な別のウィジェットが含まれているIWidgetControllerのリストと、編集、新規、および表示用にActionResultを格納する必要があるインターフェースsaisがあります。ウィジェットの例:CalenderController、NewsController、GalleryControllerなど...これらの領域では、それらのコントローラのそれぞれの内容をプリントアウトする必要があります。今私もURLHTMLを読み込むことができますが、私は内部からそれをやっていることがより速いだろうと思った...そうですか?

+0

foo/indexのホームページとしてホームページを配信したいのであれば、ここに何かが見つからない限り、パス/ Home/Indexでビューを返すことができます – davethecoder

+0

年、私はCMSシステムを構築していますすべてのウィジェットコントローラのためのインターフェイスがあります。私にはリストがあります。そして、データベースは、ページ上で異なる領域に印刷されたコントローラを選択します。 – BjarkeCK

+0

ビューからHtml.RenderAction( "_ CalendarWidget"、 "Calendar")を実行することはできませんか? –

答えて

0

これを試してみてください:

string t = ViewToString.RenderPartialToString("Index", null, this.ControllerContext); 

をとにかく、なぜあなたは、文字列に変換する必要がありますか?

+0

ありがとうございます。 this.ControllerContextが機能します!しかし、それは間違ったControllerContextです、それはHomeControllerからのControllerContextである必要があります。 – BjarkeCK

+0

私はそれぞれのウィジェットにViewWidget、EditWidget、newWidget ActionResultsを持つ独自のControllerを持つCMS用のウィジェットシステムを構築しています。 – BjarkeCK

+0

@BjarkeCK、それは動作しますが、間違っています。 **?!** – gdoron

関連する問題