ユーザーのリスト(ループ)を含む部分ビューがあり、各ユーザーが1つの詳細を含む別の部分ビューであるとします。
foreach (var user in Model.Users)
{
<a href="#" onclick="JavascriptFunction(user.Id);">Details<a>
}
リストアイテムの1つについて上記の[詳細]リンクをクリックすると、ポップアップ(JQueryモーダルダイアログ())がポップアップし、選択したユーザーの詳細が表示されます。または、少なくともそれが目標です。選択したユーザーの詳細を、開いた新しいポップアップに表示する必要があります。
したがって、.dialog('Open')がトリガーされる前に、ポップアップに含まれる部分ビューの背後にあるモデルにユーザーの詳細を入力する必要があります。
質問:Javascript関数(上記の例ではJavascriptFunction関数をクリック)内からActionMethodを呼び出し、ダイアログが表示される前に部分ビューモデルにデータを入力するための最良の方法は何ですか?
現在、私は次の方法でそれを行っていますが、何らかの理由で、ページにレンダリングされるデータに大きな遅延が発生しています。.html()が最終的にデータを表示する前に、5〜10秒間空白のdivが表示されます。
メインリストページ:
<div id="userPopup"></div>
ActionMethodからユーザーの詳細を含む部分ビューをロードすることを想定したJavascript:
$.post('@Url.Action("Details","User")', { id: userId},
function (data) {
$("#userPopup").html(data);
});
おそらく、ページに部分ビューをプリロードしてから、PartialView全体を書き直さずにデータをモデルにロードする方法がありますか?それは理想的なシナリオですが、それを行う方法はないと思いますね。
前もって感謝します !紛らわしいことがあれば、遠慮なく質問してください。