html - “/”应用程序中的服务器错误。ASP.Net MVC Visual Studio 2019
问题描述
每当我运行该程序时,它都能完美运行。但是,只要我点击“登录”按钮,它就会告诉我
说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。
请求的 URL:/LoginController/Authorize
我检查了所有内容,拼写正确。我对此很陌生,无法弄清楚我做错了什么。任何指导将不胜感激。
在App_Start
文件夹里面我有我的RouteConfig.cs
文件。它包含以下内容:
namespace CoffeeShop_Web_App
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "LoginController", action = "Index", id = UrlParameter.Optional }
);
}
}
}
我有一个控制器,它是我的LoginController.cs
,它包含以下内容。
namespace CoffeeShop_Web_App.Controllers
{
public class LoginController : Controller
{
// GET: Login
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Authorize()
{
return View();
}
}
}
最后,我唯一的观点Index.cshtml
包含以下内容。
@model CoffeeShop_Web_App.Models.OwnerLogin
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Login</title>
<style>
#login-div {
position: absolute;
left: 40%;
top: 40%;
border: 1px solid #ccc;
padding: 10px 10px;
}
</style>
</head>
<body>
<div id="login-div">
@using (Html.BeginForm("Authorize", "LoginController", FormMethod.Post))
{
<table>
<tr>
<td></td>
<td style="text-decoration:underline">Coffee Shop</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.USERNAME)
</td>
<td>
@Html.EditorFor(model => model.USERNAME)
</td>
</tr>
<tr>
<td></td>
<td>@Html.ValidationMessageFor(model => model.USERNAME)</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.PASSWORD)
</td>
<td>
@Html.EditorFor(model => model.PASSWORD)
</td>
</tr>
<tr>
<td></td>
<td>@Html.ValidationMessageFor(model => model.PASSWORD)</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" name="name" value="Login" />
<input type="reset" name="name" value="Clear" />
</td>
</tr>
</table>
}
</div>
<script src="~/Scripts/jquery-3.4.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
</body>
</html>
解决方案
您的表单正在回发到控制器的Authorize
方法LoginController
:
@using (Html.BeginForm("Authorize", "LoginController", FormMethod.Post))
您不必为控制器的名称指定控制器后缀。以下应该解决它:
@using (Html.BeginForm("Authorize", "Login", FormMethod.Post))
您在设置路由时也犯了同样的错误:
defaults: new { controller = "LoginController", action = "Index",
id = UrlParameter.Optional }
这应该只是:
defaults: new { controller = "Login", action = "Index",
id = UrlParameter.Optional }
推荐阅读
- python - 无法将熊猫字符串转换为数字
- python - Heroku 无法满足要求 tensorflow==2.3.0
- python - Python多处理进程未启动
- regex - grep 正则表达式,用于以特定长度的两个字符开头的字符串
- python - 如何选择最小距离的行
- node.js - 无法将 Node.js 中的联系页面后端部署到 Heroku
- graphviz - 如何为 FDP 渲染设置点中节点之间的最小距离?
- java - 在 webflux/reactor 流中“解包”Mono 的安全方法?
- svelte - 在 Svelte 中的兄弟组件之间传递数据
- php - PHP正在为每行的前三张卡片复制结果