2011-12-22 55 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的界面。窗口小部件的例子:CalenderController,NewsController,GalleryController等...所以在這些區域我需要打印出每個控制器的內容。現在我也可以加載URLHTML,但我想從內部做它會更快......對嗎?

+0

如果你只是想傳遞的主頁,富/指數的主頁,那麼你可以只返回一個路徑/首頁/索引視圖,除非我在想念的東西在這裏 – davethecoder

+0

年,我建立一個CMS系統,和我有一個用於所有Widget控制器的接口。我有一份清單。然後數據庫的願望,控制器是在頁面上,在不同的領域。 – BjarkeCK

+0

你不能只從你的視圖做Html.RenderAction(「_ CalendarWidget」,「日曆」)? –

回答

0

試試這個:

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

無論如何,你爲什麼需要轉換爲字符串?

+0

謝謝你的建議。 this.ControllerContext的作品!但它是錯誤的ControllerContext,它需要是HomeController的ControllerContext。 – BjarkeCK

+0

我正在爲我的CMS構建一個Widget系統,其中每個Widget都有自己的控制器,包括ViewWidget,EditWidget和newWidget ActionResults。 – BjarkeCK

+0

@BjarkeCK,它工作!,但它是錯誤的。 **?!** – gdoron

相關問題