asp.net mvc 5 сообщение формы не работает - PullRequest
0 голосов
/ 06 мая 2018

У меня проблема с отправкой формы в asp.net mvc 5. Когда я использую бритву Html.BeginForm (), она создает форму с пустым действием и не работает. Когда я использую HTML-код, он открывает новую страницу "site.com/Home/NewDeck" с ошибкой 404

Оба следующих кода не работают.

Это код представления (с Html.BeginForm ()):

@using (Html.BeginForm("NewDeck", "Home", FormMethod.Post, new { @class="popup-form"}))
    {

        <div class="popup-header-row">
            <div style="display:flex; margin: 0; width: 24px"></div> @*pseudo element*@
            <div class="popup-header">New deck</div>
            <img id="btn-close-new-deck" src="~/Content/images/close.svg" class="close-button" />
        </div>

        @Html.TextBoxFor(Model => Model.NewDeck.Name, new { @placeholder = "Name of the deck", @class = "input-text-form" })

        <input type="submit" value="Add deck" class="btn-one-center" />
    }

Это код вида (с формой):

    <form method="post" action="/Home/NewDeck" class="popup-form">
        <div class="popup-header-row">
            <div style="display:flex; margin: 0; width: 24px"></div> @*pseudo element*@
            <div class="popup-header">New deck</div>
            <img id="btn-close-new-deck" src="~/Content/images/close.svg" class="close-button" />
        </div>

        @Html.TextBoxFor(Model => Model.NewDeck.Name, new { @placeholder = "Name of the deck", @class = "input-text-form" })

        <input type="submit" value="Add deck" class="btn-one-center" />

    </form>

Это код HomeController:

    [Route("")]
    [HttpGet]
    public ActionResult Index()
    {
        Model = new HomeViewModel { DeckList = Database.GetDecksList("mail@gmail.com") };
        Model.NewDeck = new Deck { Random = false };         
        return View(Model);
    }

    [HttpPost]
    public ActionResult NewDeck(HomeViewModel model)
    {
        Database.AddDeck(model.NewDeck.Name, "mail@gmail.com", model.NewDeck.Random);
        return View(model);
    }

1 Ответ

0 голосов
/ 07 мая 2018

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

Попробуйте заменить параметр в вашем действии каким-либо строковым значением только для отладки и назовите его «sample», а в форме введите текстовое поле с именем = «sample». Это поможет вам выяснить, является ли это проблема с передачей параметров или маршрутизацией, если это работает нормально, вам нужно переосмыслить модель, которую вы передаете из вашего View, или, возможно, перепроверить ваши маршруты.

Также проверьте ваши значения в базе данных, если они обновляются, то ошибка «формы, открывающей новую страницу на новой вкладке с 404 (не найдено)», связана с тем, что ваше действие POST возвращает представление, которое должно быть GET View и в вашем контроллере с тем же именем нет действия GET.

поэтому добавьте действие Get с тем же именем, что и у вашего действия Post

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...