无法更改页面 .NET

Posted

技术标签:

【中文标题】无法更改页面 .NET【英文标题】:Can't change pages .NET 【发布时间】:2018-01-07 19:11:46 【问题描述】:

我在检查登录信息后尝试从控制器切换视图。运行此逻辑后如何正确切换到正确的视图?

我想切换到问题解释视图。我现有的代码如下:

[HttpPost]
public IActionResult LoginBody(LoginModel info)

    System.Diagnostics.Debug.WriteLine(info.Email);
    System.Diagnostics.Debug.WriteLine(info.Password);

    //Some login Verification Logic

   return View("~\\Views\\QuestionExplanation\\QuestionExplanation");        

我的文件夹组织如下:

QuestionExplanationController 的代码如下:

namespace OliviaSite.Controllers

    public class QuestionExplanationController : Controller
    
        // GET: /<controller>/
        [HttpGet]
        public IActionResult ShowView()
        
            return View();
        
    

【问题讨论】:

return RedirectToAction("QuestionExplaination","QuestionExplaination"); 其中第一个参数代表动作,第二个参数代表控制器。如果您想传递参数,请参阅here。 @DimitarNikovski 我得到一个空白页,当我检查时,我得到一个 404 错误。你知道为什么会这样吗? 您的 QuestionExplanation 控制器中有哪些方法,是否存在? @AdamBrown 它与 LoginController 一起存在于我的控制器文件夹中(发生这种逻辑的地方)我唯一的方法是“ShowView”,它只返回视图 请贴出该控制器的代码。谢谢。 【参考方案1】:

正如 Dimitar Nikovski 所说,您可以从登录操作返回 RedirectToAction 以重定向到 ShowView 操作方法:

[HttpPost]
public IActionResult LoginBody(LoginModel info)

    System.Diagnostics.Debug.WriteLine(info.Email);
    System.Diagnostics.Debug.WriteLine(info.Password);

    //Some login Verification Logic

   // usage: RedirectToAction("action_name", "controller_name")
   return RedirectToAction("ShowView", "QuestionExplanation");        

然后,在ShowView动作方法中提及目标视图名称(您可以使用除动作名称之外的任何其他视图名称,确保视图名称存在于Views/QuestionExplanation中):

// QuestionExplanationController
[HttpGet]
public IActionResult ShowView()

    return View("QuestionExplanation"); // mention view name here

发生 404 错误是因为视图引擎试图查找由设置错误的LoginBody 方法提供的视图名称。

注意:这条路径似乎不正确:

return View("~\\Views\\QuestionExplanation\\QuestionExplanation");

正确的相对路径应该是这样的,基于similar issue:

return View("~/Views/QuestionExplanation/QuestionExplanation.cshtml");

【讨论】:

以上是关于无法更改页面 .NET的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 ASP.NET 中的“此页面无法显示”错误?

ASP.NET MVC 页面无法加载并显示“找不到资源”

更改 asp.net 中的默认登录页面 UI

动态控件更改后“无法加载 ViewState”

更改 ASP.NET Core Razor 页面中的默认登录页面?

更改 ASP.Net Core 5 中的默认页面