Maijane Ответов: 1

Моя форма не обрабатывается и не отправляется, есть ли что-то с моим кодом, когда я нажимаю кнопку Отправить, я хочу, чтобы форма обрабатывалась и давала мне уведомление, как отправленное сообщение.


Когда я нажимаю "отправить", страница "остаться на той же странице" не обрабатывается и не отправляется. Я хочу, чтобы страница отправила форму по электронной почте и дала мне уведомление, подобное отправленному сообщению.

< @using (Html.BeginForm("Feedback", "Home", FormMethod.Post))

                    {

                        @Html.ValidationSummary()

                        @Html.AntiForgeryToken()



                        @Html.ValidationSummary("", new {@class = "text-danger"})

                        <div class="form-group">
                            @Html.LabelFor(m => m.Name, new {@class = "col-md-2 control-label"})
                            <div class="col-md-10">
                                @Html.TextBoxFor(m => m.Name, new {@class = "form-control", placeholder = "Your Name"})
                            </div>
                        </div>

                        @Html.ValidationSummary("", new {@class = "text-danger"})
                        <div class="form-group">
                            @Html.LabelFor(model => model.Email, "Email", new {@class = "control-label col-sm-2"})
                            <div class="col-md-10">
                                @Html.EditorFor(m => m.Email, new {htmlAttributes = new {@class = "form-control", placeholder = "Email Address"}})
                            </div>
                        </div>

                        @Html.ValidationSummary("", new {@class = "text-danger"})
                        <div class="form-group">
                            @Html.LabelFor(m => m.Cell, new {@class = "col-md-2 control-label"})
                            <div class="col-md-10">
                                @Html.EditorFor(m => m.Cell, new {htmlAttributes = new {@class = "form-control", placeholder = "Phone Number", type = "text"}})
                            </div>
                        </div>

                        @Html.ValidationSummary("", new {@class = "text-danger"})
                        <div class="form-group">
                            @Html.LabelFor(m => m.Message, new {@class = "col-md-2 control-label"})
                            <div class="col-md-10">
                                @Html.TextBoxFor(m => m.Message, new {@class = "form-control", placeholder = "Comments", rows = "4"})
                            </div>
                        </div>
                        <div class="col-sm-6 col-sm-offset-3">
                            <div class="btn-toolbar">
                                <button class="btn-raised btn-primary btn" id="submit">
                                    Submit
                                    <div class="ripple-container"></div>
                                </button>
                                <button class="btn btn-default">Cancel</button>
                            </div>
                        </div>
                    }>





[HttpPost]
       [ValidateAntiForgeryToken]
       public async Task<ActionResult> Feedback(FeedbackViewModel model)

       {
           if (!ModelState.IsValid)
           {
               var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
               var message = new MailMessage();
               message.To.Add(new MailAddress("example@gmail.com"));
               message.From = new MailAddress("example@outlook.com");
               message.Subject = "Feedback";
               message.Body = string.Format(body, model.Name, model.Cell, model.Email, model.Message);
               message.IsBodyHtml = true;

               using (var smtp = new SmtpClient())
               {
                   var credential = new NetworkCredential
                   {
                       UserName = "example@example.com",
                       Password = "Passwordquot;
                   };
                   smtp.Credentials = credential;
                   smtp.Host = "smtp.example.co.za";
                   smtp.Port = 587;
                   smtp.EnableSsl = true;
                   await smtp.SendMailAsync(message);
                   return RedirectToAction("Sent");
               }

           }


           //TODOL Send email in c#
           return View(model);


       }


Что я уже пробовал:

[HttpPost]
       [ValidateAntiForgeryToken]
       public async Task<ActionResult> Feedback(FeedbackViewModel model)

       {
           if (!ModelState.IsValid)
           {
               var body = "<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
               var message = new MailMessage();
               message.To.Add(new MailAddress("example@gmail.com"));
               message.From = new MailAddress("example@outlook.com");
               message.Subject = "Feedback";
               message.Body = string.Format(body, model.Name, model.Cell, model.Email, model.Message);
               message.IsBodyHtml = true;

               using (var smtp = new SmtpClient())
               {
                   var credential = new NetworkCredential
                   {
                       UserName = "example@example.com",
                       Password = "Passwordquot;
                   };
                   smtp.Credentials = credential;
                   smtp.Host = "smtp.example.co.za";
                   smtp.Port = 587;
                   smtp.EnableSsl = true;
                   await smtp.SendMailAsync(message);
                   return RedirectToAction("Sent");
               }

           }


           
           return View(model);


       }

ZurdoDev

Похоже, у вас есть код, чтобы сделать то, что вы упомянули. Итак, у вас есть вопрос?

Maijane

@RyanDev моя форма не обрабатывается и не отправляется, что - то не так с моим кодом, когда я нажимаю кнопку Отправить, я хочу, чтобы форма обрабатывалась и давала мне уведомление, как отправленное сообщение.

ZurdoDev

1. ответьте на комментарий так, чтобы пользователь был уведомлен, а не добавлял новый комментарий к вашему собственному вопросу.
2. "что - то не так с моим кодом" - откуда мне знать? Я не могу запустить ваш код.
3. сделайте простую отладку, чтобы узнать, что происходит, а затем вы можете задать вопрос.

1 Ответов

Рейтинг:
12

njammy

В этом ли проблема?

if (!ModelState.IsValid)

Должно быть
if (ModelState.IsValid)