如何动态地将代码(或标记)添加到来自控制器MVC3的视图代码中

时间:2011-11-12 19:19:26

标签: c# asp.net-mvc-3 razor

在我的控制器中,视图将照常返回

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>
}

有可能吗?

由于

1 个答案:

答案 0 :(得分: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>
   }
}