将网页添加到 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"),您需要一些东西:
HomeController
控制器(假定默认 MVC 路由为 {ControllerName}/{ActionName}
Test
return 视图的操作方法(即使 return View()
也可以)
- 在项目的 Views\Home 文件夹中,一个包含您的视图的 Test.cshtml 文件。
我意识到这是一个非常基本而且可能很愚蠢的问题。
我在 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"),您需要一些东西:
HomeController
控制器(假定默认 MVC 路由为 {ControllerName}/{ActionName}Test
return 视图的操作方法(即使return View()
也可以)- 在项目的 Views\Home 文件夹中,一个包含您的视图的 Test.cshtml 文件。