私は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を読み込むことができますが、私は内部からそれをやっていることがより速いだろうと思った...そうですか?
foo/indexのホームページとしてホームページを配信したいのであれば、ここに何かが見つからない限り、パス/ Home/Indexでビューを返すことができます – davethecoder
年、私はCMSシステムを構築していますすべてのウィジェットコントローラのためのインターフェイスがあります。私にはリストがあります。そして、データベースは、ページ上で異なる領域に印刷されたコントローラを選択します。 – BjarkeCK
ビューからHtml.RenderAction( "_ CalendarWidget"、 "Calendar")を実行することはできませんか? –