我正在尝试在检查登录信息后从控制器切换视图。运行此逻辑后如何正确切换到正确的视图?
我想切换到问题解释视图。我现有的代码如下:
[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();
}
}
}
答案 0 :(得分: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");