如何将 MVC5 RedirectResult () 重定向到 Asp.net 中的整页?

Posted

技术标签:

【中文标题】如何将 MVC5 RedirectResult () 重定向到 Asp.net 中的整页?【英文标题】:How can I redirect MVC5 RedirectResult () to a full page in Asp.net? 【发布时间】:2020-01-19 13:05:53 【问题描述】:

在我的 ASP.NET MVC5 页面中,我有一个带有超时的个人登录功能。这很好用,一旦超时过期,登录页面会在下一个操作中打开,然后继续。 只有一个布局问题。如果我在 PartialView 中单击已注销的用户,登录页面将在此 PartialView 中呈现,而不是在整个页面上。 验证码:

        public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
    
        if (filterContext.Result == null || filterContext.Result is HttpUnauthorizedResult)
        
            filterContext.HttpContext.Session["PlantId"] = filterContext.HttpContext.Request.QueryString["PlantId"];
            filterContext.HttpContext.Session["ShowOnlyEnabledRecipes"] = filterContext.HttpContext.Request.QueryString["ShowOnlyEnabledRecipes"];
             filterContext.Result = new RedirectResult("~/UserLogin/Login");
        
    

和控制器:

    [HttpPost]
    public ActionResult Login(LoginModel loginModel)
    
        Initialize();
         ...
        return View(loginModel);
            

如何确保登录表单始终占据整个页面?另外,如果它是通过单击 PartialView 来调用的?

【问题讨论】:

【参考方案1】:

在 PartialView(PartialView 的控制器)中进行重定向,结果只呈现在该区域,如果要定向到另一个页面(更改 url),您需要在控制器中添加以下代码。您将获得来自 Ref 链接的高级信息。

附: ActionFilter 无法返回 javascript,请放入普通控制器。

参考:http://geekswithblogs.net/DougLampe/archive/2011/08/05/redirecting-from-a-partial-view-the-right-way-in-asp.net.aspx

string virtualPath = System.Web.HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpRuntime.AppDomainAppVirtualPath;
string returnUrl = virtualPath + "/UserLogin/Login";
return JavaScript( string .Format( "document.location = '0';" , returnUrl));

【讨论】:

请在您的答案中添加一些解释,以便其他人可以从中学习

以上是关于如何将 MVC5 RedirectResult () 重定向到 Asp.net 中的整页?的主要内容,如果未能解决你的问题,请参考以下文章

MVC5 如何将 TinyMCE 值绑定到模型

如何从一个 MVC5 应用程序获取访问令牌到另一个 MVC5 应用程序

如何在 Asp.Net MVC5 中使用 Ajax 将数据库更改保存到拖放列表

如何在 mvc5 中更新/删除上传的图像

如何将类的对象发送到数据库以存储在 ASP.NET MVC5 中?

如何将javascript绑定到MVC5视图中创建的表中的checkboxes和datetimepicker