无法更改页面 .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的主要内容,如果未能解决你的问题,请参考以下文章