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 回答