HTTP 404 на маршруте в настройке маршрута в HomeController - PullRequest
0 голосов
/ 25 апреля 2018

У меня проблема с настройкой маршрута в моем домашнем контроллере.Я пытаюсь установить маршрут для моего поля ввода электронной почты.Вот мой фрагмент кода cshtml:

<form method="post" action="/home/emailsignup">
            <input type="text" class="form-control" name="email" placeholder="you@example.com">
            <span class="input-group-btn btnstateless">
                <input type="submit" id="mailSignup"value="SUBSCRIBE"/>
            </span>
        </div>
    </form>

Я пытаюсь установить маршрут для действий в моем HomeController.cs Вот часть моего кода:

[Route("home/emailsignup")]
        [HttpGet]
        public ActionResult EmailSignupGet()
        {
                var cVM = new ConfirmedViewModel
                {
                    confirmationTitle = "Thanks!",
                    message = "",
                    nextStep = "<a href=\"/\">Return home</a>"
                };
                return View("Confirmed", cVM);

        }
        [HttpPost]
        public ActionResult EmailSignup(string email)
        {

            if (UtilsClass.IsValidEmail(email))
            {
Email.GreenArrowHelper.AddOrUpdateUserByEmailFetchAllInfo(email).ConfigureAwait(false);
                var cVM = new ConfirmedViewModel();
                cVM.confirmationTitle = "Thanks!";
                cVM.message = "";
                cVM.nextStep = "<a href=\"/\">Return home</a>";
                return View("Confirmed", cVM);
            }
            else
            {
                ErrorViewModel eVM = new ErrorViewModel
                {
                    title = "Hmm, something's not right.",
                    message = "That doesn't look like a valid email address. Please try again.",
                    nextstep = "<a href=\"/\">Return home</a>"
                };
                return View("Error", eVM);
            }


        }

Япытаюсь вернуть свои сообщения, но вместо этого я получаю HTTP 404 при нажатии на кнопку подписки. Что я делаю не так?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы пропускаете маршрут в пост-действии

//POST home/emailsignup
[Route("home/emailsignup")]
[HttpPost]
public ActionResult EmailSignup(string email) {
    //...
}

При использовании атрибутной маршрутизации на контроллере вам нужно применить его к желаемым действиям, иначе получите 404, не найденных, как вы уже встречались.

...