1

それを処理するためのより良い方法はありますか?

@foreach (var item in Model)
{
    <div id="divDetail@{@item.CategoryId}"/>
        @Ajax.ActionLink(
            item.CategoryName, 
            "GetDetails", 
            new { id = item.CategoryId }, 
            new AjaxOptions() { UpdateTargetId = string.Format("divDetail{0}", item.CategoryId) })
       }
    </div>
}
4

1 に答える 1

6

ヘルパー メソッドを使用しHTML.ActionLinkてリンクを生成し、カスタム jQuery ajax 呼び出しを使用してデータを取得します。これを行う利点は、詳細 div に表示する前に応答データを操作できるように、完全に制御できることです。

リンクに CSS クラスを追加して、機能をバインドするときに (要素の選択において) より具体的にできるようにしました。

@foreach (var item in Model)
{
    <div id='divDetail@(item.ID)'></div>
    @Html.ActionLink(item.CategoryName, "GetDetails", new { @id = item.CategoryId}, new {@id= "link-"+item.CategoryId, @class="lnkItem" })    
}

そしてスクリプトは

<script type="text/javascript">
    $(function () {
        $(".lnkItem").click(function (e) {
            e.preventDefault();
            var itemId = $(this).attr("id").split("-")[1]
            $.get($(this).attr("href"), { id: itemId }, function (data) {
               //i am free to do anything here before showing the data !
                $("#divDetail" + itemId).html(data);
            })
        });
    });
</script>
于 2012-04-18T12:57:10.950 に答える