3

您将如何仅使用 Jquery + Ajax 重写此语句?此代码显示一个链接。当我单击它时,视图将返回到 StuffPanel id。

@{ AjaxOptions options = new AjaxOptions
           {
               InsertionMode = InsertionMode.Replace,
               UpdateTargetId = "StuffPanel",
               OnBegin = "OnBeginWork",
               OnComplete = "OnCompleteWork",
           };}
<p>@Ajax.ActionLink("show stuff", "Index", "Stuff", options)</p>
4

2 回答 2

3

干得好:

<a href="/Index/Stuff" id="action">show stuff</a>

$(function() {
    $('#action').click(function(e) {
        e.preventDefault();
        var url = $(this).attr('href');
        $.ajax({
            url: url,
            beforeSend: OnBeginWork,
            complete: OnCompleteWork,
            success: function(html) {
                $('#StuffPanel').html(html);
            }
        });
    });
});

我建议您保留 actionLink,因为它所做的只是为您获取正确的路由。给它添加一个ID,这样你就可以更容易地绑定click事件,然后使用click事件回调来触发ajax调用。使用成功函数将 的内容替换为#StuffPanel响应。

于 2012-04-30T20:01:22.403 回答
0

根据您提供的有限信息,这样的事情应该会让您朝着正确的方向前进:

$(function(){   
    $('#id-to-link').on('click',function(e){
        e.preventDefault();
        $.ajax('Index/Stuff',{
            type: 'POST',
            data: '{}',
            dataType: 'html',
            contentType: 'application/json; charset=utf-8',
            success: function(data){
                $('#StuffPanel').html(data);
            }
        });
    });
}

您必须检查回调data中的变量。success视图中的 HTML 将位于或位于like或类似data的某些属性中。此外,您应该给您的链接一个唯一的 ID,以便您可以轻松地将您的点击事件绑定到它。datadata.ddata.message

于 2012-04-30T20:01:56.927 回答