簡體   English   中英

“/”應用程序中的服務器錯誤。 ASP.Net MVC Visual Studio 2019

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM