8

是否可以使用 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。

谢谢。

4

2 回答 2

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。

于 2013-03-22T21:13:14.593 回答
2

Jquery 中的 doin 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>

我知道,这不是最漂亮的解决方案,但也许它对你有用?

于 2012-11-29T18:11:44.113 回答