联系我们表单ASP.net MVC

本文关键字:net MVC ASP 表单 联系我 我们 联系 | 更新日期: 2023-09-27 17:49:38

我已经用以下代码创建了联系我们的表单:

ConatModels.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace DemoVer1.Models
{
    public class ContactModels
    {
       [Required(ErrorMessage = "First Name is required")] 
        public string FirstName { get; set; }
        public string Supject { get; set; }
        [Required]
        public string Email { get; set; }
        [Required]
        public string Message { get; set; } 
    }
}

HomeController.cs:

   using DemoVer1.Models;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Mail;
    using System.Text;
    using System.Web;
    using System.Web.Mvc;
    namespace DemoVer1.Controllers
    {
        public class HomeController : Controller
        {
            public ActionResult Index()
            {
                return View();
            }
            public ActionResult About()
            {
                ViewBag.Message = "Your application description page.";
                return View();
            }
            public ActionResult Contact(ContactModels c)
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        MailMessage msg = new MailMessage();
                        SmtpClient smtp = new SmtpClient("smtp.gmail.com");
                        MailAddress from = new MailAddress(c.Email.ToString());
                        StringBuilder sb = new StringBuilder();
                        msg.From = new MailAddress("sender@gmail.com");// replace it with sender email address
                        msg.To.Add("recipient@gmail.com");// replace ti with recipient email address
                        msg.Subject = "Contact Us";
                        smtp.EnableSsl = true;
                        smtp.Credentials = new System.Net.NetworkCredential("sender@gmail.com", " email password");
                        smtp.Port = 587;
                        sb.Append("First name: " + c.FirstName);
                        sb.Append(Environment.NewLine);
                        sb.Append("Last name: " + c.Supject);
                        sb.Append(Environment.NewLine);
                        sb.Append("Email: " + c.Email);
                        sb.Append(Environment.NewLine);
                        sb.Append("Comments: " + c.Message);
                        msg.Body = sb.ToString();
                        smtp.Send(msg);
                        msg.Dispose();
                        return View("Success");
                    }
                    catch (Exception)
                    {
                        return View("Error");
                    }
                }
                return View();
            }
        }
    }

Contact.cshtml

  @model DemoVer1.Models.ContactModels
    @{
        ViewBag.Title = "Contact";
    }
    <h1>contact us</h1>
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)
        <div class="row">
            @Html.LabelFor(model => model.FirstName, "First Name:")
            @Html.EditorFor(model => model.FirstName)
            @Html.ValidationMessageFor(model => model.FirstName)
        </div>
        <div class="row">
            @Html.LabelFor(model => model.Supject, "Last Name:")
            @Html.EditorFor(model => model.Supject)
        </div>
        <div class="row">
            @Html.LabelFor(model => model.Email, "Email:")
            @Html.EditorFor(model => model.Email)
        </div>
        <div class="row">
            @Html.LabelFor(model => model.Message, "Comments:")
            @Html.TextAreaFor(model => model.Message)
        </div>
        <div class="row">
            <input type="submit" value="submit" />
            <input type="reset" value="reset" />
        </div>
    } 

如果我运行它,我得到一个错误!我不知道是什么问题。谢谢你的帮助。提前感谢:)

联系我们表单ASP.net MVC

Using:

using System;
using System.Net;
using System.Net.Mail;
using System.Threading.Tasks;
using System.Web.Mvc;
using ProjectName.Models;

控制器:

[HttpPost]
public async Task<ActionResult> Contact(FormCollection C)
{
      string Name = C["name"];
      string Email = C["email"];
      string Message = C["message"];
      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("yourmail@yahoo.com"));  // replace with valid value 
          message.From = new MailAddress("yourmail@Domain.com");  // replace with valid value
          message.Subject = "Your email subject";
          message.Body = string.Format(body, Name, Email, Message);
          message.IsBodyHtml = true;
          using (var smtp = new SmtpClient())
          {
              var credential = new NetworkCredential
                  {
                        UserName = "yourmail@Domain.com",  // replace with valid value
                        Password = "********"  // replace with valid value
                  };
                  smtp.Credentials = credential;
                  smtp.Host = "webmail.Domain.com";//address webmail
                  smtp.Port = 587;
                  smtp.EnableSsl = false;
                  await smtp.SendMailAsync(message);
                  return RedirectToAction("Index");
              }
        }
              return View();
}

设置到web.config:

<system.net>
  <mailSettings>
    <smtp from="yourmail@Domain.com">
      <network host="webmail.Domain.com" 
               port="587" 
               userName="yourmail@Domain.com"
               password="password" 
               enableSsl="false" />
    </smtp>
  </mailSettings>
</system.net>

视图:

@using (Html.BeginForm("Contact", "Home", FormMethod.Post, new { @class = "contact-list", id = "contacts_form", role = "form", target = "_blank" }))
{
     @Html.TextBox("name", null, new { @class = "form_item", @required = "required", placeholder = "Name", type = "text" })
     @Html.TextBox("email", null, new { @class = "form_item", @required = "required", placeholder = "E-mail", type = "email" })
     @Html.TextBox("message", null, new { @class = "form_item", @required = "required", placeholder = "Message", type = "text" })
     <input type="submit" value="subscribe" />
  } 

由于该表单是post表单,因此您需要这样编写操作:

[HttpPost]
public ActionResult Contact(ContactModels c)
            {
//your code
}

正如它注释的那样,你还需要添加一个[Get] Action:

[HttpGet]
public ActionResult Contact()
{
    //your code
}