プロジェクトのリストが記載されたページがあります。ユーザーがプロジェクトのリンクをクリックすると、ウィキの対応するページを指すiframeがスライドして表示され、その詳細情報が記載されたページが表示されます。事業。問題は、ページに多くのプロジェクトが含まれている可能性があるため、すべてのiframeをロードしたくないということです。スライドアウトする必要があるiframeのみをロードしたいので、スライドアウトします。
これは、これまでの私のビューの簡略版です(PartialViewです)。
@model IEnumerable<IT_Project_Manager.Models.ItProject>
<script type="text/javascript">
$(function () {
$("body").on("click", "#project-header", function () {
var elem = $("~ #details", this);
if (!$("> iframe", elem).attr("src")) {
elem.slideDown(200);
changeSrc(elem);
}
else elem.slideToggle(200);
});
});
</script>
@foreach (var item in Model)
{
string wikiUrl = "https:/wiki-url/" + string.Join("+", item.Project_Name.Split(' '));
<text>
<script type="text/javascript">
function changeSrc(elem) {
$("> iframe", elem).attr("src", "@wikiUrl")
}
</script>
</text>
<div class="project">
<div class="well well-small>
<h4 id="project-header">
<a>
@Html.DisplayFor(model => item.Project_Name)
(@Html.DisplayFor(model => item.Program))
</a>
</h4>
<p>@Html.DisplayFor(model => item.Description)</p>
<div id="details" class="cell hide">
<iframe seamless="seamless" height="400px"></iframe>
</div>
</div>
</div>
}
ご覧のとおり、私のモデルはIEnumerableであるため、反復処理する必要がありますが、JavaScriptがアクセスする前に、foreachがサーバー上で発生します。したがって、スクリプトがスクリプトにアクセスできるようになるまでに、wikiUrlは常に最終的なプロジェクトのURLにのみ対応します。
だから私の質問は、javascriptがモデルのProject_Nameの各アイテムを取得できるようにして、正しいURLを生成して正しいiframeに割り当てることができるようにするにはどうすればよいですか?