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

おかげで、しかし、問題は、私はビューを変更する必要はありませんし、「ショートカット」を望んでいたです。その理由は、200(!!!)ビューを変更する多くのビュー(約40個のエンティティ、それぞれ独自のインデックス/作成/削除/編集/詳細)があるからです。だからこそ私はマークアップ注入をしたいのです。コントローラコードはcodegenで生成され、コードインジェクション部を追加してすべてのエンティティのすべてを処理するように変更することができます。他のアイデア? – bzamfir

関連する問題