在循环中的每个项中动态设置div id,以便在Ajax.ActionLink方法中引用?

时间:2012-04-18 12:13:27

标签: asp.net-mvc-3 razor

我们有更好的方法来处理它吗?

@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>
}

1 个答案:

答案 0 :(得分: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>