0

問題は次のとおりです。json を返すアクション メソッドがあります。私がする必要があるのは、その json を使用して、それに基づいていくつかの html を構築することです。たとえば、車のリストを受け取ったとします。私がやりたいのは、たとえば次のようにリストを表示することです。

<div id="cars">
@foreach(var car in Model)
{
  <p>car.Name</p>
}
</div>

<div id="pageLinks">
  @Html.MyPageLinks(Model.PageInfo)
</div>

現在、これはビューであり、コントローラーでそのビューをレンダリングし、結果全体をjson結果として返します(このリンクを確認してください)。すべてがうまく機能しますが、大きな欠点が 1 つあります。FindPartialViewを機能させるには、たくさんのことをモックする必要があるため、アクション メソッドをテストできません (現在、これにこだわっています)。さらに悪いことに、私はビューをアクションと結びつけました。つまり、ビューを変更すると単体テストも損なわれ、これは受け入れられません。

一方、javascript を使用してすべての html を生成することは、生の javascript と jquery が大量になるため、非常に悪いアプローチのように思えます (単純化した例でも大量の js が存在することに注意してください。すべてが js になるため、MyPageLinks をテストするオプションを失います)。

私が必要/やりたいことは、jsonのみを返し(データオブジェクトのみで、htmlはありません)、ビューでjsonが返されると適用されるテンプレートのようなものを持つことです。

4

1 に答える 1

1

コントローラー アクションから JSON ではなく、HTML を返すだけです。したがって、表示したビュー スニペットを div 内にラップされた部分に入れます。

<div id="paginatedCars">
    @Html.Partial("Cars")
</div>

次に、呼び出しているコントローラー アクションがこの更新されたパーシャルを返すようにします。

于 2012-09-12T09:25:20.643 に答える