是否可以使用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。
感谢。
答案 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>
我知道,这不是最美丽的解决方案,但它可能对你有用吗?