2011-02-27 12 views
0

リンクなどのあるすべてのページに同じバナーを持つWebアプリケーションがあります。これらのリンクのいずれかをクリックすると、javascript/jquery次のようにしてdivの内容を部分的に表示するか、ターゲットページにバナーが含まれている正規のHtml.ActionLinkを実行しますか?部分ビューをロードするときのMVCのベストプラクティス

ページ構造

<div id ="banner"> 
// banner content 
</div> 
<div id="mainContentDiv"> 
// changing content 
</div> 

だから私は、バナーは変更されません私のバナーにリンクを選択し、私は内容を変更するには、いくつかのjqueryの関数を呼び出す必要があります...

$('#mainContentDiv').load('/ControllerName/ActionName?args...'); 

...いくつかのコントローラアクションを呼び出し、私のメインコンテンツのdivで部分的なビューを返します。これはいい練習ですか?つまり、必要なコンテンツのみを読み込み、バナーをリロードする必要はありません。私もjsonを使用して部分的なビューを返そうとしていましたが、私がやっていることに対しては複雑すぎるようです。だから私の質問は...これは正しい操作であるか、これを行うには何か不利な点はありますか?

私はHtml.ActionLinkとしてすべてのものを持っています。静的なコンテンツをリフレッシュする必要がないリファクタリングの価値はあるのでしょうか?それはユーザーができないことを意味します各リンクがそれらを取っている場所を参照してください(javascriptのonclickイベントになるので、部分ビューを返すようにすべてのアクションメソッドを変更する必要があります(現在のビューからバナーを削除し、 。)

答えて

1

もし可能なら、なぜdo both私は1つの可能なアプローチを概説してみましょう:?

まず、あなたはあなたのリンク<a data-target="#main" href="https://stackoverflow.com/users/1/show">Show me user 1!</a>を持っているこの時点で、我々は、通常のを持っているので。人間と検索エンジンの両方に共通のリンクです。

今すぐジャズアップしてください。

$("a").click(function() { 
    var target = $.data(this, "target"); 
    $(target).load("_" + this.href); 
    return false; 
}); 

慣例として、私は部分的にアンダースコアを付けます。これは非常に基本的なデモですが、他の面白いこともできますが、これは一般的な考えです。

+0

私はこれが好きです。良いリンクです。 –

-2

部分ビューを読み込むタイミングを教えてください。

ajax.actionlinkのようにajaxを呼び出す場合

関連する問題