2009-06-02 116 views
1

我想知道在運行時(到ViewPage)添加ViewUserControl是否存在任何已知問題。它工作正常,如果我添加控件聲明,但不是如果我以編程方式添加控件(在這種情況下,在代碼後面的文件)。我沒有收到錯誤,它只是不呈現控件,但是通過調試程序確實確認頁面生命週期中的相關方法正在被調用。動態添加ASP.NET MVC中的ViewUserControl

我的確意識到在ASP.NET MVC文件後面使用代碼並不是很清楚,但我確實有理由想要這樣做。

回答

5

發送您要加載的控件列表並將其傳遞給視圖模型。

控制器動作:

var controlsToLoad = new List<string>(); 
controlsToLoad.Add("foo"); 

return View(controlsToLoad); 

查看:

<% foreach (var control in Model as List<string>) { %> 
    <% Html.RenderPartial(control); %> 
<% } %> 

這將讓你擺脫後面的代碼,仍然讓你在它控制在視圖中加載控制器動態指定。

+0

嗨John, 感謝您的快速響應。這是唯一的方法嗎?我希望能夠創建任意數量的某個PartialView類的實例,每個實例都有不同的數據。 – 2009-06-02 19:43:51

+0

創建一個具有兩個屬性的DTO:字符串ControlName和對象Data然後創建這些列表並在循環中使用RenderPartial(ControlName,Data);傳遞控制特定的數據。 – 2009-06-02 20:24:17

0

或者,如果您需要其他功能,您可以將上述建議以擴展方法包裝到您的ViewPage類的擴展方法中。