I have created contact us form with the following code:
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("[email protected]");// replace it with sender email address
msg.To.Add("[email protected]");// replace ti with recipient email address
msg.Subject = "Contact Us";
smtp.EnableSsl = true;
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", " 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>
}
If I run it, I get an error!I don't know what is the problem. I appreciate your help. Thanks in advance :)
Because the form is a post form you need to write the action like that:
As it commented you need to add also a [Get] Action: