Не удается вызвать метод HttpPost контроллера - PullRequest
1 голос
/ 21 ноября 2019

Я пытаюсь реализовать следующий сценарий. Создайте веб-страницу, на которой пользователь может вводить свои комментарии в текстовой области комментария, и, нажав кнопку «Отправить», веб-страница должна отправить электронное письмо на адрес электронной почты клиента, а затем в новом представлении должно появиться сообщение с предложением пользователя. были отправлены клиенту.

В моем приложении asp.Net MVC я создал элемент управления и добавил имена методов [HttpGet] и [HttpPost] «SuggestionMessage». Метод Get загружает представление для отображения формы предложения. Проблема заключается в нажатии кнопки «Отправить», мой метод httpPost не реализуется!

  [HttpGet]
        public ActionResult SuggestionMessage()
        {
        //this view will load the suggestion form
            return View();
        }

        [HttpPost]
        public ActionResult SuggestionMessage(string content)
        {
        //Code to send email
        //below view will display the message that the user's
        //suggestion have been sent to client.
           return View();
        }

Это моя форма предложения

@{
    ViewBag.Title = "Suggestions";
}

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Suggestions</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
    <link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>

    <style>
        body {
            font: 20px Montserrat, sans-serif;
            line-height: 1.8;
            color: #000000;
        }

        p {
            font-size: 16px;
        }

        .margin {
            margin-bottom: 25px;
        }

        .margin-1 {
            margin-bottom: 5px;
        }

        .bg-1 {
            background-color: #23F0E4; /* Aqua */
            color: #ffffff;
        }

        .container-fluid {
            padding-top: 70px;
            padding-bottom: 70px;
            padding-left: 0px;
            padding-right: 0px;
        }

    </style>

</head>
<body>
    <div class="container-fluid">
        @using (Html.BeginForm())  
        {
        <form>
            <div class="form-group">
                <label for="comment">Comment:</label>
                <textarea class="form-control" rows="5" id="comment"></textarea>
            </div>
            <div>
                <button  class="btn-primary" id="btnSubmit">Submit</button>
            </div>

        </form>
    }
        </div>
</body>
</html>

1 Ответ

1 голос
/ 21 ноября 2019

Ваш код указывает на две формы, которые могут мешать с кнопкой отправки и отправляет дополнительный тег формы без какого-либо атрибута действия;

@using (Html.BeginForm())  
{
   <form>
      ...
   </form>
}

Не забудьте добавить атрибут имени к полям вашей формы, я заметил, что textarea не содержит атрибут name, используйте;

<textarea name="content" class="form-control" rows="5" id="comment"></textarea>

У вашей кнопки также не было атрибута type = submit , чтобыубедитесь, что он предназначен для отправки, используйте;

<button type="Submit" class="btn-primary" id="btnSubmit">Submit</button>

@Html.BeginForm уже заключает в себе элементы с тегом <form> и автоматически публикует в тот же контроллер и имя действия, так что просто используйте;

// just remove the extra form tag inside Html.BeginForm()

@using (Html.BeginForm())  
{
  <div class="form-group">
     label for="comment">Comment:</label>
     <textarea name="content" class="form-control" rows="5" id="comment"></textarea>
  </div>
  <div>
     <button type="Submit" class="btn-primary" id="btnSubmit">Submit</button>
  </div>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...