[英]Server Error in '/' Application. 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 }
);
}
}
}
我有一個 controller 這是我的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>
您的表單回發到LoginController
controller 的Authorize
方法:
@using (Html.BeginForm("Authorize", "LoginController", FormMethod.Post))
您不必為 controller 的名稱指定 controller 后綴。 以下應該解決它:
@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 }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.