Ошибка сервера в приложении '/' ASP. Net MVC Visual Studio 2019 - PullRequest
0 голосов
/ 10 июля 2020

Когда я запускаю программу, она работает отлично. Однако, как только я нажимаю кнопку «Войти», он сообщает мне:

Описание: 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>

1 Ответ

0 голосов
/ 10 июля 2020

Ваша форма отправляется обратно методу 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 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...