2011-11-12 68 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