将网页添加到 ASP.Net 应用程序

Add Webpage to ASP.Net Application

我意识到这是一个非常基本而且可能很愚蠢的问题。

我在 asp.net 中第一次构建网站,但在使用 RedirectToAction 时遇到了问题。

我已经添加了一个 cshtml 页面来测试重定向,但它找不到文件。

下~/View/Shared

我添加了Test.cshtml。

关于 Login/Authentication 的验证,我正在尝试使用以下内容更新方法....

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }

        // This doesn't count login failures towards account lockout
        // To enable password failures to trigger account lockout, change to shouldLockout: true
        var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);

        switch (result)
        {
            case SignInStatus.Success:
                return RedirectToAction("Test", "Home");
                //return RedirectToLocal(returnUrl);
            case SignInStatus.LockedOut:
                return View("Lockout");
            case SignInStatus.RequiresVerification:
                return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            case SignInStatus.Failure:
                return RedirectToLocal(returnUrl);
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return View(model);
        }
    }

如上所示,我添加了以下行。

RedirectToAction("Test", "Home");

但是,每次我尝试 运行 代码时,我都会得到一个 “/”应用程序中的服务器错误。

然后说找不到 /Home/Test..

意识到这是我第一次尝试使用 asp.net 和 MVC,我有点困惑为什么简单的重定向语句无法找到网页。

我在做什么蠢事?

通过 returning RedirectToAction("Test", "Home"),您实际上是在重定向到一个操作 - 而不是在您设置 Test.cshtml 时重定向到一个视图。要响应 /home/test,您需要一个带有测试操作的 HomeController 对象来处理请求。要仅 return 您的视图,因为它是共享的,您可以使用 return View("Test") 的方法,它将在您的共享目录中找到您的 test.cshtml 文件。

MVC 在很大程度上依赖于约定。如果您想让 /Home/Test 响应重定向请求(特别是 `RedirectToAction("Test", "Home"),您需要一些东西:

  1. HomeController 控制器(假定默认 MVC 路由为 {ControllerName}/{ActionName}
  2. Test return 视图的操作方法(即使 return View() 也可以)
  3. 在项目的 Views\Home 文件夹中,一个包含您的视图的 Test.cshtml 文件。