2011-11-12 76 views
1

動態添加代碼(或標記)的視圖代碼在我的控制器,該視圖返回照常如何從控制器MVC3

return new View(myModel); 

我想是一些額外的代碼添加到視圖。例如。在一定的條件下,在@section中「包裝」整個視圖標記。例如,我的觀點是

<h2>@ViewBag.Title</h2> 
<p> 
@Html.ActionLink("Create New", "Create") 
</p> 

和處理控制器的動作後,我想返回的視圖是

@section MySection{ 
<h2>@ViewBag.Title</h2> 
<p> 
@Html.ActionLink("Create New", "Create") 
</p> 
} 

這可能嗎?

謝謝

回答

4

它通常是一個糟糕的主意,你的控制器注入視圖的標記。

爲什麼不增強視圖模型以包含原始視圖模型和此條件?

class MyViewModel { 
    MyModelType MyModel { get; set; } 
    bool Wrap { get; set; } 
} 
視圖

...

@if (!Model.Wrap) { 
    <h2>@ViewBag.Title</h2> 
    <p> 
    @Html.ActionLink("Create New", "Create") 
    </p> 
} 
@section MySection { 
    @if (Model.Wrap) { 
    <h2>@ViewBag.Title</h2> 
    <p> 
    @Html.ActionLink("Create New", "Create") 
    </p> 
    } 
} 
+0

謝謝,但問題是我想要一個「捷徑」,不具有改變視圖。原因是我有很多觀點(約40個實體,每個都有自己的索引/創建/刪除/編輯/細節),這使得200(!!!)視圖發生變化。這就是爲什麼我想要一些「標記注入」。控制器代碼是用一個代碼生成的,我可以改變它來添加代碼注入部分來處理所有實體的全部內容。任何其他想法? – bzamfir