使用Ajax.ActionLink更新整个页面

时间:2012-11-29 17:55:01

标签: asp.net-mvc visual-studio

是否可以使用Ajax.ActionLink(...,...)刷新整个页面而不是UpdatetargetID?

我更喜欢使用Ajax.ActionLink,因为经典的Html.ActionLink不是POST方法。

我试试:

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure ?" },  null) 

但页面没有刷新,我不得不按F5。

感谢。

2 个答案:

答案 0 :(得分:14)

您实际上可以将gardarvalur提出的两种方法结合起来,以获得不需要将整个页面包装在div中的类似MVC的代码。将window.location.reload()调用移动到AjaxOptions对象的OnSuccess属性,如下所示:

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", OnSuccess="window.location.reload()" })

不涉及jQuery,只是MVC Ajax ActionLink中的一些普通的旧javascript。

答案 1 :(得分:2)

在Jquery中进行ajax调用怎么样?这样的事情。

<button onclick="SomeFunction()" type="button" >Click me</button>

然后在Jquery这样的事情:

function SomeFunction()
{
    var url = '/MyController/MyAction/';

    $.ajax({
        type: "POST",
        url: url,
        data: { value: '1234' }, //if there are any parameters
        dataType: "html", //or some other type
        success: function (data) {
            window.location.reload(true);
            // or something in that area, maybe with the 'data'
        },
        error: function () {
        //some derp
        }
    });

我希望我不会误解你的问题(我意识到这并不完全是使用ajax.actionlink)。 ;) 此致!

##########编辑#########

或者也许是一个遥不可及的想法,告诉你整个页面包含的updatetargetid的链接。像这样:

@Ajax.ActionLink("Click me", "MyAction", "MyController", new { value = '1234' }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure ?", UpdateTargetId = "TheDivToUpdate" },  null)

然后用这个div标签包装你网页的内容:

<div id="TheDivToUpdate">
    //The content of your page
</div>

我知道,这不是最美丽的解决方案,但它可能对你有用吗?