gpt4 book ai didi

jquery - 从 jquery 调用 MVC 操作并处理重定向或返回的部分 View

转载 作者:行者123 更新时间:2023-12-01 00:35:01 26 4
gpt4 key购买 nike

我想调用我的操作,并让该操作返回直接呈现到 View 上的结果部分 View ,或者让操作重定向到服务器上的另一个页面。

但是,当我通过 jQuery 执行此操作时,它似乎将重定向的页面加载到我的目标 div 元素中,而不是干净有效地重新加载页面/站点。

jQuery 调用:

$.ajax({
type: "GET",
url: "Myurl",
dataType: "html",
success: function (data) {
// replace the context of the section with the returned partial view
$('#upload_section').html(data);
}
});

MVC 操作示例

public ActionResult MyAction() 
{
bool doRedirect = // some code to determine this condition
if (doRedirect)
{
return RedirectToAction("MyAction", "Home");
}
else
{
// return the partial view to be shown
return PartialView("_UploadSessionRow");
}
}

我做的这一切都是错的吗?有没有更好的最佳实践方法来做到这一点?执行此操作的需要将出现在其他操作和 jQuery 请求中,因此我正在寻找一种通用的方法来解决此问题。

更新:感谢安德鲁斯的回答,我通过按照他的建议更改我的ajax并进行了一些修改,得到了我想要的东西。最终的ajax是:

function loadOrRedirect(options) {

var jData = null;

try {
if (options.data) {
jData = $.parseJSON(options.data);

if (jData.RedirectUrl) {
window.location = jData.RedirectUrl;
}
}
} catch (e) {
// not json
}

if (!jData && options.callback) {
options.callback(options.data);
}
};

$.ajax({
type: "GET",
url: "Myurl",
dataType: "html",
success: function (data) {
loadOrRedirect(
{
data: data,
callback: function (html) {
replaceRow.replaceWith(html);
alternateRowHighlighting();
}
});
}

});

最佳答案

您无法从 AJAX 请求进行重定向。您必须从 JavaScript 进行重定向。我会推荐这样的东西:

public ActionResult MyAction() 
{
bool doRedirect = // some code to determine this condition
if (doRedirect)
{
return Json(new
{
RedirectUrl = Url.Action("MyAction", "Home")
});
}
else
{
// return the partial view to be shown
return PartialView("_UploadSessionRow");
}
}

然后在 JavaScript 方面:

$.ajax({
type: "GET",
url: "Myurl",
dataType: "html",
success: function (data) {
if (data.RedirectUrl) {
window.location = data.RedirectUrl;
} else {
// replace the context of the section with the returned partial view
$('#upload_section').html(data);
}
}
});

关于jquery - 从 jquery 调用 MVC 操作并处理重定向或返回的部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com