gpt4 book ai didi

c# - 在 PartialViewResult() 方法中重定向页面

转载 作者:行者123 更新时间:2023-12-05 01:48:40 25 4
gpt4 key购买 nike

您好,当某些条件不是使用 PartialViewResult 方法的页面时,我正在尝试重定向页面。但我做不到。我的代码如下:

public PartialViewResult Visit()
{
int visit = 0;
if (base.IsLoggedIn() == true)
{
visit++;
}
else
{
// toDO redirect to home/index page
}
}

最佳答案

您提供的代码片段将无法编译。您必须从所有代码路径返回一个结果。尝试这样的事情:

public ActionResult Visit()
{
int visit = 0;

if (base.IsLoggedIn() == true)
{
visit++;
return PartialView();
}
else
{
return RedirectToAction("ACTION_NAME_GOES_HERE");
}
}

更新:

我相信我现在明白了你想要完成的事情。如果未登录的用户发出 ajax 请求,您希望浏览器重定向用户。我建议按如下方式修改您的操作方法:

public ActionResult Visit()
{
int visit = 0;

if (base.IsLoggedIn())
{
visit++;
// whatever else needs to be done
return PartialView();
}
else
{
// Note that this could be done using the Authorize ActionFilter, using
// an overriden Authorize ActionFilter, or by overriding OnAuthorize().
if (!base.IsLoggedIn())
return new HttpUnauthorizedResult();
}
}

假设您已在 web.config 中进行配置,响应将是 302 重定向,这不是您在此场景中想要的。请参阅 Phil Haack 的博客文章,其中解释了如何防止此 ASP.NET 行为并返回 401 未经授权的响应:

http://haacked.com/archive/2011/10/04/prevent-forms-authentication-login-page-redirect-when-you-donrsquot-want.aspx

然后,假设您使用 jQuery 发出 AJAX 请求,您可以处理 401 响应:

$.ajax({
url: '/your_controller/visit',
type: 'GET',
statusCode: {
200: function (data) {
// data = your partialview
},
401: function (data) {
location.href = '/the_path/to_redirect/to';
}
}
});

关于c# - 在 PartialViewResult() 方法中重定向页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8401994/

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