繁体   English   中英

数据未将视图移至控制器,我尝试了所有可能的解决方案

[英]Data not moving view to controller, I have tried with all possible solutions

当我按下“保存”按钮时,所有字段{email,name ..}都为null,这就是代码无法正常工作的原因。 只需要从html文本框中获取数据并在控制器块中使用值即可。

视图: - -

 @model RenderCshtml.Models.ContactModel 
        @{
            ViewBag.Title = "Contact";
            Layout = "~/Views/Shared/_TemplateView.cshtml";
        }
        @using (Html.BeginForm("Contact", "Home", FormMethod.Post, new { id = "ContactForm", @class = "navbar-right" }))
        {
        <section id="MainContents" style="padding-top:50px">
            @*<script src="~Content/ContactUs/ContactValidation.js"></script>*@
            <script src="~Content/ContactUs/lib/jquery-validation/dist/jquery.validate.min.js"></script>
            <script src="~Content/ContactUs/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
            <link rel="stylesheet" href="~Content/ContactUs/lib/bootstrap/dist/css/bootstrap.min.css" />
            <div>
                <div class="col-md-6">
                    <div>
                        @if (ViewBag.Message == null)
                        {
                            <div>
                                <form method="post" id = "ContactForm">
                                    <div class="form-group">
                                        <label asp-for="Name">Name</label>
                                        <input asp-for="Name" class="form-control"/>
                                        <span asp-validation-for="Name"
                                              class="text-muted"></span>
                                    </div>
                                    <div class="form-group">
                                        <label asp-for="Email">Email</label>
                                        <input asp-for="Email" class="form-control" />
                                        <span asp-validation-for="Email"
                                              class="text-muted"></span>
                                    </div>
                                    <div class="form-group">
                                        <label asp-for="Subject">Subject</label>
                                        <input asp-for="Subject" class="form-control" />
                                        <span asp-validation-for="Subject"
                                              class="text-muted"></span>
                                    </div>
                                    <div class="form-group">
                                        <label asp-for="Message">Message</label>
                                        <textarea rows="5" cols="15"
                                                  asp-for="Message" class="form-control"></textarea>
                                        <span asp-validation-for="Message"
                                              class="text-muted"></span>
                                    </div>
                                    <div>
                                        <button type="submit"
                                                class="btn btn-success">
                                            Send
                                        </button>
                                    </div>

                                </form>
                            </div>
                        }
                    </div>

                    <div>
                        <div>
                            @if (ViewBag.Message != null)
                            {
                                <div>@ViewBag.Message</div>


                            }
                        </div>
                    </div>
                </div>

            </div>
        </section>

控制器:----

  public ActionResult Contact()
        {       
            return View(new ContactModel());
        }
        [HttpPost]
        public ActionResult Contact(ContactModel vm)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    MailMessage msz = new MailMessage();
                    msz.From = new MailAddress(vm.Email);//Email which you are getting 
                                                         //from contact us page 
                    msz.To.Add("dinesh.joshi1794@gmail.com");//Where mail will be sent 
                    msz.Subject = vm.Subject;
                    msz.Body = vm.Message;
                    SmtpClient smtp = new SmtpClient();

                    smtp.Host = "smtp.gmail.com";

                    smtp.Port = 587;

                    smtp.Credentials = new System.Net.NetworkCredential
                    ("securedj94@gmail.com", "!l0veum0m");

                    smtp.EnableSsl = true;

                    smtp.Send(msz);

                    ModelState.Clear();
                    ViewBag.Message = "Thank you for Contacting us ";
                }
                catch (Exception ex)
                {
                    ModelState.Clear();
                    ViewBag.Message = $" Sorry we are facing Problem here {ex.Message}";
                }
            }
            return View();
        }

模型: - - -

 public class ContactModel
{


    public string Name { get; set; }    

    public string Email { get; set; }

    public string Subject { get; set; }

    public string Message { get; set; }       

}

如果您使用的是asp.net mvc4或更高版本,则可以使用该版本,但您未指定使用哪个版本,因此请务必将其发布,以防万一

而不是像这样使用输入:

<input asp-for="Name" class="form-control"/>

您可以使用textboxfor,因为它将链接到模型并发布到控制器

这是一个用于输入名称的文本框的示例,您可以对其他输入框进行相同的操作

@Html.TextBoxfor(m => n.Name, new { @class = "form-control" })  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM