いくつかの記録があります。すべてのレコードをクリックすると、情報がアコーディオンで表示される必要があります。
あなたが望むものを達成することができる2つの方法があります。レコードに関する詳細情報を提供するアクションから部分的なビューを返す必要があると思います。
- アンカーリンクのクリックイベントをリッスンし、イベント内でURLをフレーム化してから
$("#accordion-container-1").load(url)
。
元。
orderNo
コメントから、アクションをパラメーターとして渡す必要があることがわかりました。したがって、orderNo
as idを設定するか、それを文字列に追加して(要素内のIDの重複を避けるため)、アンカーリンクのidに設定する必要があります。
それで、
$(function(){
$("a.somecssclass").click(function(){
var orderNo = this.id;
var url = "/ControllerName/Tracking?orderNo=" + orderNo;
// this will call the action through ajax and update the container with the
// partial view's html.
$("#divToLoadTheHtml").load(url);
});
});
- MVCでサポートされているajaxアクションリンクを使用します。
Ajax.ActionLink
ajaxを介してコントローラーアクションを呼び出すアクションリンクを作成し、html結果をコンテナーに更新できます。
元。
この場合、コレクションをループしてレコードを生成するときは、メソッドを介してリンクを作成する必要があり(クリックすると、ajaxを介してコンテンツをロードする必要があります) 、ライブラリAjax.ActionLink
を含める必要があります。jquery'unobtrusive.ajax.js
@foreach(var m in Collection)
{
.. other stuff
@Ajax.ActionLink(link name, "Action", new { orderNo = m.something? },
new AjaxOptions
{
UpdateTargetId = "somediv" // set the div name where you want to load the partial view
});
}
OPのコメントに基づいて更新
アクションメソッドは次のようになります。
public PartialViewResult Tracking(int orderNo)
{
var manager = new OrderManager();
return PartialView(manager.Tracking(orderNo));
}
名前の付いTracking.cshtml
た部分ビューが必要です。部分ビュー内に、話していたレコードの詳細情報を表すhtmlを作成する必要があります。
Tracking.cshtml
@model TrackingModel
<div>
@Html.DisplayFor(...)
...
</div>
jqueryまたはajaxアクション(前述のとおり)からアクションを呼び出すと、Tracking
divなどの特定のコンテナーにロードできる部分ビューhtmlが取得されます。