介绍
这是一个关于ASP.NET MVC 6(ASP.NET 1.0的核心)实施联系我们页面后。起初,我创建了模型的联系表,为创建的视图,然后所有的逻辑的东西是在控制器完成。这是使用MVC模式(模型视图和控制器模式)和jQuery用于客户端验证实现的。
背景
这是工作和上.NET 4.5.1版本测试,但它不会在.NET核心1.0作品,因为它不具有:
System.Net.Mail
在.NET 1.0核心按现在。这可能在以后的版本中实现。
代码模式
这是联系表型号代码。
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;
namespace ContactUS.ViewModel
{
public class ContactViewModel
{
[Required]
[StringLength(20,MinimumLength =5)]
public string Name { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
[Required]
public string Subject { get; set; }
[Required]
public string Message { get; set; }
}
}
代码控制器
这是控制器代码,我们使用Gmail来发送邮件。您可以使用其他邮件服务提供商,但我这样做对Gmail和它的工作。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNet.Mvc;
using ContactUS.ViewModel;
using System.Net.Mail;
namespace ContactUS.Controllers
{
public class HomeController : Controller
{
[HttpGet]
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Index(ContactViewModel 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("emailaddrss@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
("youremailid@gmail.com", "password");
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 IActionResult Error()
{
return View();
}
}
}
代码客户端
在这里,我使用jQuery的客户端验证,并引导到很好看。
@model ContactUS.ViewModel.ContactViewModel
@{
ViewData["Title"] = "Home Page";
}
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<div>
<div class="col-md-6">
<div>
@if (ViewBag.Message == null)
{
<div>
<form method="post">
<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>
我也安装在这里的全部工作的源代码。
如果您遇到任何问题,请随时与我联系。