2012-01-09 6 views
2

私は、データのテーブルを表示するWebページを持っています。私のページには、エレメントが変更されたときにAjax呼び出しがデータベースに行われ、そのエレメントがデータベース内で更新されるような、いくつかのエレメントに対してjQueryがあります。MVCページの一部をリフレッシュ/更新する最も「MVC」標準方法は何ですか?

また、データグリッドを完全にリフレッシュする必要があります。

1)Ajaxを使用してコントローラアクションを呼び出し、Request.IsAjaxRequestを使用してAjaxリクエストがあるかどうかを確認し、Ajaxを呼び出すjavascriptにHTML.Partialを返し、 HTMLを更新する必要があります。私はこの方法をすでに90%働いています。

Previous stackoverflow question

2)は、次を使用します。

<div id="#thingy">@Html.Action("Detail", new { ac, me })</div> 
$('#thingy').load("@Server.JavaScriptStringEncode(Url.Action("Detail", new { ac, me }))"); 

は、今はまだ動作する第一の方法を取得しようとしているだけでなく、第二の方法を見て、それが非常に簡単になります考えています。

私は動作するコードだけでなく、MVCのやり方に最も適合するコードを記述したいと思います。これを考慮して。どちらが最善の方法でしょうか?一つのことは、@ Server.Java ...コードです。私は以前これを見たことがないし、これがMVCでどのように処理されるのだろうか、すべての通常のセキュリティが適用されるのだろうか?ビュー内のモデルはpartialviewと同じである場合、私は、ほぼ間違いなくpartialview(および@RenderPartial()に固執するのだ

+0

メリッサ - デジャヴここに。ここではhttp://stackoverflow.com/questions/8785596/problems-implementing-ajax-to-return-a-html-partial-page-in-mvc3 :) –

+0

こんにちはジム、あなたは質問のリンクを見ましたか?私には別の方法が提案されました。私はいくつかのアドバイスを探しているので、これは異なる質問です。他の方法は全く異なっていた。ちょうど私が働くことができる最善の方法を行うことを探しています。ありがとう。 –

+1

使用window.location.reload(); – user1006544

答えて

5

メリッサ、

、そうでない場合は、あなたが呼び出すために@RenderAction()ヘルパーを選ぶことができベース・データ・タイプがベース・ビュー・データ・タイプと大きく異なる場合、ビュー全体でデータがリフレッシュされます。

あなたのアプリからは、問題のユースケースに最も適したアプローチが分かりますが、RenderPartial()が主要なアプローチであることは間違いありません。ここで、ajaxの更新は、 div内のhtmlを更新します。

[編集]は - ここで私は、これは実際に定める見るであろう方法は次のとおりです。

// this is a div contained within the main Detail.cshtml view 
<div id="#thingy">@Html.RenderPartial("_Detail", Model)</div> 

これは自動的に第1パスに_Detail.cshtml呼ばpartialviewに対するモデルからのdivを移入します。その後、上記と同じようにpartialviewとmodelを返すアクションを介して、同じdiv(#thingy)をターゲットにするようにajaxを呼び出します。

すなわち:

public ActionResult Detail(string ac, string me) {  
    vm.AdminDetails = _link.Detail(ac + me).ToList();  
    if (Request.IsAjaxRequest())   
     return PartialView("_Detail", vm);  
    return View(vm); 
} 

希望は、これは理にかなっています。

幸運

+0

あなたの助けをジムにありがとう。私はこれを実装し、後で答えをマークしようとします。私はちょうどあなたの助けのためにupvotedしかし、すべて大丈夫なら私は後で受け入れることができます。ちょうど最初にチェックしたい。 –

+0

メリッサ - 完全に理解されています。どんな問題でも、ちょうどメモを落としてください。私は、上記の答えを編集してより完全な例を取り上げます。 –

+0

方法は働いたが、部分的に更新されたら、私のjQueryのバインディングがなくなっているように見えます。私はそれをさらに見てみる必要があります。ご協力いただきありがとうございます。 –

関連する問題