.field-validation-error { color: #f00; } .field-validation-valid { display: none; } .input-validation-error { border: 1px solid #f00; background-color: #fee; } .validation-summary-errors { font-weight: bold; color: #f00; } .validation-summary-valid { display: none; }
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; namespace PartyInvites.Models { public class GuestResponse { [Required(ErrorMessage = "Please enter your name")] public string Name { get; set; } [Required(ErrorMessage="Please enter your email address")] [RegularExpression(".+\\@.+\\..+",ErrorMessage="Please enter a valid email address")] public string Email { get; set; } [Required(ErrorMessage="Please enter your phone number")] public string Phone { get; set; } [Required(ErrorMessage="Please specify whether you'll attend")] public bool? WillAttend { get; set; } } }
在view文件夹中,Home控制器内存在3个主视图
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <link href="~/Content/bootstrap.css" rel="stylesheet" /> <link href="~/Content/bootstrap-theme.css" rel="stylesheet" /> <title>Index</title> <style> .btn a { color: white; text-decoration: none; } body { background-color: #f1f1f1; } </style> </head> <body> <div class="text-center"> <h2>We're going to have an exciting party.<br />(To do: sell it better. Add pictures or something.)</h2> <h3>And you are invited</h3> <div class="btn btn-success"> @Html.ActionLink("RSVP Now", "RsvpForm") </div> </div> </body> </html>
@model PartyInvites.Models.GuestResponse @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <link href="~/Content/bootstrap.css" rel="stylesheet" /> <link href="~/Content/bootstrap-theme.min.css" rel="stylesheet" /> <link href="~/Content/style.css" rel="stylesheet" /> <title>RsvpForm</title> </head> <body> <div class="panel panel-success"> <div class="panel-heading text-center"><h4>RSVP</h4></div> <div class="panel-body"> @using (Html.BeginForm()) { @Html.ValidationSummary() <div class="form-group"> <label>Your name:</label> @Html.TextBoxFor(x => x.Name, new { @class = "form-control" }) </div> <div class="form-group"> <label>Your email:</label> @Html.TextBoxFor(x => x.Email, new { @class = "form-control" }) </div> <div class="form-group"> <label>Your phone:</label> @Html.TextBoxFor(x => x.Phone, new { @class = "form-control" }) </div> <div class="form-group"> <label>Will you attend?</label> @Html.DropDownListFor(x => x.WillAttend, new[]{ new SelectListItem(){Text="Yes,I'll be there",Value=bool.TrueString}, new SelectListItem(){Text="No,I can't come",Value=bool.FalseString} }, "Choose an option", new { @class = "form-control" }) </div> <div class="text-center"><input class="btn btn-success" type="submit" name="name" value="Submit RSVP" /></div> } </div> </div> </body> </html>
@model PartyInvites.Models.GuestResponse @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Thanks</title> </head> <body> <div> <h1>Thank you,@Model.Name!</h1> @if (@Model.WillAttend == true) { @:It's great that you're coming.The drinks are already in the fridge. } else { @:Sory to hear that you can't make it,but thanks for letting us know. } </div> </body> </html>
controller
using PartyInvites.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace PartyInvites.Controllers { public class HomeController : Controller { // // GET: /Home/ //public ActionResult Index() //{ // return View(); //} public ViewResult Index() { int hour = DateTime.Now.Hour; ViewBag.Greeting = hour < 12 ? "Good Morning" : "Good Afternoon"; return View(); } public ViewResult RsvpForm() { return View(); } [HttpPost] public ViewResult RsvpForm(GuestResponse guestResponse) { if (ModelState.IsValid) { return View("Thanks", guestResponse); } else { return View(); } } } }