2016-04-20 13 views
2

私は自分のページで多くの選択クエリを持っていて、それらに基づいていくつかのアクションリンクが別のデータタブを得ています。流れの上にスタック上Htmlの代わりにAjax ActionリンクMVCのアクションリンク

例我々は、ユーザーが任意の上でクリックした場合質問

概要はタグバッジなど

に答える見るユーザーのプロフィールを見ます1つは、アクション全体に当たるタブで、ページの他のすべてのセクションがデータベースにヒットし、ページの読み込み時間が長くなります。パフォーマンスを向上させるために、 jax、検索した後、私はこの例を得ました。

部分図。

@model IEnumerable<AJAX.Models.tblStudent> 
<table> 
@foreach (var item in Model) 
{ 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.Age) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Name) 
     </td> 
    </tr> 
} 
</table> 
<h2>Time is @DateTime.Now</h2> 

コントローラ

public ActionResult Index() 
{ 
    return View(); 
} 

public PartialViewResult Twenty() 
{ 
    var result = from r in db.tblStudents where r.Age == 20 select r; 
    return PartialView("_Country", result); 
} 

public PartialViewResult TwentyFive() 
{ 
    var result = db.tblStudents.Where(x => x.Age >= 25); 
    return PartialView("_Country", result); 
} 

インデックスビュー

@{ 
    ViewBag.Title = "Home Page"; 
} 

@Ajax.ActionLink("Age 20", "Twenty", new AjaxOptions 
{ 
    UpdateTargetId = "StudentList", 
    InsertionMode = InsertionMode.Replace, 
    HttpMethod = "GET" 
}) 

@Ajax.ActionLink("Age 25", "TwentyFive", new AjaxOptions 
{ 
    UpdateTargetId = "StudentList", 
    InsertionMode = InsertionMode.Replace, 
    HttpMethod = "GET" 
}) 
<div id="StudentList"></div> 

<h2>Time is @DateTime.Now</h2> 
@section scripts{ 
@Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.min.js") 
} 

これは正常に動作し、クリックしたページは、ページの他のセクションを残して、データベースをヒットするかどうかをチェック交差する日時を追加しました。 MVCでAjaxを使用する正しい方法かどうかを知りたいですか? Ajax.ActionLinkのように。

注:this tutorialアプリケーションの状況に

+1

リンクを参照してください。しかし、なぜあなたは年齢別にフィルタリングのための別の方法を持っていますか?これはパラメータ 'int Age'を持つメソッドの1つでなければならず、クエリ文字列値のルート値としてパラメータを渡します。 –

+0

私はそれを指摘してくれてありがとうございます。 – Dave

答えて

0

それを。あなたは私が見つけただけのこの記事を見ることができます。

あなたが書く必要があるコードの量(Ajax.ActionLinkではより少ない)と必要なコントロールのレベル(Html.ActionLinkとjquery ajax呼び出しでさらに多く)。

So it's amount of code vs level of control and functionality needed => up to you to decide which one you need. 

Both approaches are perfectly fine. The Ajax.ActionLink uses the jquery.unobtrisuve-ajax script to AJAXify the anchor behind the scenes. 

Personally I always use Html.ActionLink + jQuery. 

collectted。これはあなたのやっは大丈夫です何

link1

link2

link3

+0

リンクのおかげで、最初のものは私が投稿した同じ著者のものです。 – Dave

関連する問題