You need to bind the view model to your view.
Change your EmailRequest model to something more descriptive, for example:
public class EmailRequestViewModel { [Required(ErrorMessage = "Required")] public string Email { get; set; } }
Your action method will look something like this:
public ActionResult EmailRequest() { EmailRequestViewModel viewModel = new EmailRequestViewModel(); return View(viewModel); }
Your post action method:
public ActionResult EmailRequest(EmailRequestViewModel viewModel) { // Check for null view model if (!ModelState.IsValid) { return View(viewModel); } // Do whatever you need to do return RedirectToAction("List"); }
And then your opinion. Sorry ASP.NET MVC 4 code, MVC 2 prehistoric :) This is just part of your view:
@model YourProject.ViewModels.EmailRequestViewModel @using (Html.BeginForm()) { @Html.TextBoxFor(x => x.Email) @Html.ValidationMessageFor(x => x.Email) }
Hope this helps.
source share