无法更改页面.NET

时间:2018-01-07 19:11:46

标签: .net asp.net-mvc view

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

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

[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");        
}

我的文件夹按如下方式组织:

enter image description here

QuestionExplanationController的代码如下:

namespace OliviaSite.Controllers
{
    public class QuestionExplanationController : Controller
    {
        // GET: /<controller>/
        [HttpGet]
        public IActionResult ShowView()
        {
            return View();
        }
    }
}

1 个答案:

答案 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");