2013-01-08 71 views
1

我有一個ASP.NET MVC 4應用程序,它使用數據庫來存儲頁面(HTML),畫廊,表單等...我想爲用戶提供一個功能,以便從內部調用其他控制器頁面。從HTML字符串內部調用Html.RenderAction

簡化的問題是如何從數據庫獲取的字符串調用渲染操作。舉個例子,我希望字符串包含@Html.RenderAction("Show", "Gallery", new {id=5})

另一個選項我必須在控制器中解析字符串,並在呈現此HTML之前將所有子調用呈現爲字符串。

編輯: 該數據庫將返回類似代碼波紋管,服務層可以替換{$畫廊$}與@Html.RenderAction("Show", "Gallery", {id=5})

<div class="text"> 
<h1> title </h1> 
<p> this is some random text {$gallery$} </p> 
</div> 
+0

'Simplif能得到它ied問題是如何從數據庫獲取的字符串中調用渲染動作。「 - 這是否意味着您想在'@ Html.RenderAction'中動態使用動作和控制器名稱? – frictionlesspulley

+0

是的,我將有一個js界面,以便用戶可以在HTML元素內添加圖庫。讓我們說插件tinyMCE,就像插入圖片一樣,你可以插入圖庫,但圖庫調用具有id的特定圖庫控制器。如果我理解了問題 –

回答

0

從你的陳述

簡化的問題是如何調用渲染來自數據庫的動作獲取 字符串。

我得到你想要使用調用一個動作動態提供action-namecontroller。如果這是你想要什麼,你使用

視圖模型

public class MyViewModel{ 

    public string Action {get;set;} 

    public string ControllerName {get;set;} 

} 

控制器

public class MyController : Controller{ 

     public ActionResult MyView(){ 

     return View(new MyViewModel 
        { Action ="MyPartialView" , ControllerName = "my"}); 
     } 

     public ActionResult MyPartialView(){ 
     return PartialView(); 
     } 
    } 

查看

@model MyView 

    ....render stuff for the view 

@{ 
    Html.RenderAction(Model.Action,Model.ControllerName); 
} 
+0

感謝您的回覆,我編輯了該問題以更好地解釋問題。 –