1. .field-validation-error {
  2. color: #f00;
  3. }
  4.  
  5. .field-validation-valid {
  6. display: none;
  7. }
  8.  
  9. .input-validation-error {
  10. border: 1px solid #f00;
  11. background-color: #fee;
  12. }
  13.  
  14. .validation-summary-errors {
  15. font-weight: bold;
  16. color: #f00;
  17. }
  18.  
  19. .validation-summary-valid {
  20. display: none;
  21. }

Style.css

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.Linq;
  5. using System.Web;
  6.  
  7. namespace PartyInvites.Models
  8. {
  9. public class GuestResponse
  10. {
  11. [Required(ErrorMessage = "Please enter your name")]
  12. public string Name { get; set; }
  13. [Required(ErrorMessage="Please enter your email address")]
  14. [RegularExpression(".+\\@.+\\..+",ErrorMessage="Please enter a valid email address")]
  15. public string Email { get; set; }
  16. [Required(ErrorMessage="Please enter your phone number")]
  17. public string Phone { get; set; }
  18. [Required(ErrorMessage="Please specify whether you'll attend")]
  19. public bool? WillAttend { get; set; }
  20. }
  21. }

Model__GuestResponse.cs

在view文件夹中,Home控制器内存在3个主视图

  1. @{
  2. Layout = null;
  3. }
  4.  
  5. <!DOCTYPE html>
  6. <html>
  7. <head>
  8. <meta name="viewport" content="width=device-width" />
  9. <link href="~/Content/bootstrap.css" rel="stylesheet" />
  10. <link href="~/Content/bootstrap-theme.css" rel="stylesheet" />
  11. <title>Index</title>
  12. <style>
  13. .btn a {
  14. color: white;
  15. text-decoration: none;
  16. }
  17.  
  18. body {
  19. background-color: #f1f1f1;
  20. }
  21. </style>
  22. </head>
  23. <body>
  24. <div class="text-center">
  25. <h2>We're going to have an exciting party.<br />(To do: sell it better. Add pictures or something.)</h2>
  26. <h3>And you are invited</h3>
  27. <div class="btn btn-success">
  28. @Html.ActionLink("RSVP Now", "RsvpForm")
  29. </div>
  30. </div>
  31. </body>
  32. </html>

View→Home→Index.cshtml

  1. @model PartyInvites.Models.GuestResponse
  2.  
  3. @{
  4. Layout = null;
  5. }
  6.  
  7. <!DOCTYPE html>
  8.  
  9. <html>
  10. <head>
  11. <meta name="viewport" content="width=device-width" />
  12. <link href="~/Content/bootstrap.css" rel="stylesheet" />
  13. <link href="~/Content/bootstrap-theme.min.css" rel="stylesheet" />
  14. <link href="~/Content/style.css" rel="stylesheet" />
  15. <title>RsvpForm</title>
  16. </head>
  17. <body>
  18. <div class="panel panel-success">
  19. <div class="panel-heading text-center"><h4>RSVP</h4></div>
  20. <div class="panel-body">
  21. @using (Html.BeginForm())
  22. {
  23. @Html.ValidationSummary()
  24. <div class="form-group">
  25. <label>Your name:</label> @Html.TextBoxFor(x => x.Name, new { @class = "form-control" })
  26. </div>
  27. <div class="form-group">
  28. <label>Your email:</label> @Html.TextBoxFor(x => x.Email, new { @class = "form-control" })
  29. </div>
  30. <div class="form-group">
  31. <label>Your phone:</label> @Html.TextBoxFor(x => x.Phone, new { @class = "form-control" })
  32. </div>
  33. <div class="form-group">
  34. <label>Will you attend?</label>
  35. @Html.DropDownListFor(x => x.WillAttend, new[]{
  36. new SelectListItem(){Text="Yes,I'll be there",Value=bool.TrueString},
  37. new SelectListItem(){Text="No,I can't come",Value=bool.FalseString}
  38. }, "Choose an option", new { @class = "form-control" })
  39. </div>
  40. <div class="text-center"><input class="btn btn-success" type="submit" name="name" value="Submit RSVP" /></div>
  41. }
  42. </div>
  43. </div>
  44. </body>
  45. </html>

View→Home→RsvpForm.cshtml

  1. @model PartyInvites.Models.GuestResponse
  2.  
  3. @{
  4. Layout = null;
  5. }
  6.  
  7. <!DOCTYPE html>
  8.  
  9. <html>
  10. <head>
  11. <meta name="viewport" content="width=device-width" />
  12. <title>Thanks</title>
  13. </head>
  14. <body>
  15. <div>
  16. <h1>Thank you,@Model.Name!</h1>
  17. @if (@Model.WillAttend == true) {
  18. @:It's great that you're coming.The drinks are already in the fridge.
  19. }
  20. else {
  21. @:Sory to hear that you can't make it,but thanks for letting us know.
  22. }
  23. </div>
  24. </body>
  25. </html>

View→Home→Thanks.cshtml

controller

  1. using PartyInvites.Models;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Web;
  6. using System.Web.Mvc;
  7.  
  8. namespace PartyInvites.Controllers
  9. {
  10. public class HomeController : Controller
  11. {
  12. //
  13. // GET: /Home/
  14. //public ActionResult Index()
  15. //{
  16. // return View();
  17. //}
  18. public ViewResult Index() {
  19. int hour = DateTime.Now.Hour;
  20. ViewBag.Greeting = hour < ? "Good Morning" : "Good Afternoon";
  21. return View();
  22. }
  23. public ViewResult RsvpForm() {
  24. return View();
  25. }
  26. [HttpPost]
  27. public ViewResult RsvpForm(GuestResponse guestResponse)
  28. {
  29. if (ModelState.IsValid)
  30. {
  31. return View("Thanks", guestResponse);
  32. }
  33. else {
  34. return View();
  35. }
  36. }
  37. }
  38. }

HomeController.cs

MVC 小demo的更多相关文章

  1. 【Java】Jsoup爬虫,一个简单获取京东商品信息的小Demo

    简单记录 - Jsoup爬虫入门实战 数据问题?数据库获取,消息队列中获取中,都可以成为数据源,爬虫! 爬取数据:(获取请求返回的页面信息,筛选出我们想要的数据就可以了!) 我们经常需要分析HTML网 ...

  2. 新手 gulp+ seajs 小demo

    首先,不说废话,它的介绍和作者就不在多说了,网上一百度一大堆: 我在这里只是来写写我这2天抽空对seajs的了解并爬过的坑,和实现的一个小demo(纯属为了实现,高手请绕道); 一.环境工具及安装 1 ...

  3. Nancy之基于Nancy.Hosting.Self的小Demo

    继昨天的Nancy之基于Nancy.Hosting.Aspnet的小Demo后, 今天来做个基于Nancy.Hosting.Self的小Demo. 关于Self Hosting Nancy,官方文档的 ...

  4. Nancy之基于Nancy.Owin的小Demo

    前面做了基于Nancy.Hosting.Aspnet和Nancy.Hosting.Self的小Demo 今天我们来做个基于Nancy.Owin的小Demo 开始之前我们来说说什么是Owin和Katan ...

  5. Nancy之基于Self Hosting的补充小Demo

    前面把Hosting Nancy with ASP.NET.Self Hosting Nancy和Hosting Nancy with OWIN 以demo的形式简单描述了一下. 这篇是为Self H ...

  6. [Unity3D]做个小Demo学习Input.touches

    [Unity3D]做个小Demo学习Input.touches 学不如做,下面用一个简单的Demo展示的Input.touches各项字段,有图有真相. 本项目已发布到Github,地址在(https ...

  7. Android -- 自定义View小Demo,动态画圆(一)

    1,转载:(http://blog.csdn.NET/lmj623565791/article/details/24500107),现在如下图的效果: 由上面的效果图可以看到其实是一个在一个圆上换不同 ...

  8. Win10 FaceAPI小demo开发问题汇总

    Win10 FaceAPI小demo开发问题汇总 最近使用微软牛津计划做一个小demo,使用FaceAPI做一个小应用,实现刷脸的功能.开发的过程中用到几个问题,具体如下: Stream 与IRand ...

  9. 模仿京东顶部搜索条效果制作的一个小demo

    最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...

随机推荐

  1. Yii2 常用代码集合

    Yii2.0 对数据库查询的一些简单的操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...

  2. 漏洞:阿里云盾phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导致GETSHELL

    阿里云盾提示phpMyAdmin <=4.8.1会出现漏洞有被SHELL风险,具体漏洞提醒: 标题 phpMyAdmin <=4.8.1 后台checkPageValidity函数缺陷可导 ...

  3. loj 6031「雅礼集训 2017 Day1」字符串

    loj 注意到每次询问串长度都是给定的,并且询问串长\(k*\)询问次数\(q<10^5\),所以这里面一个东西大的时候另一个东西就小,那么考虑对较小的下功夫 如果\(k\le \sqrt{n} ...

  4. 06 Django之模型层---多表操作

    一 创建模型 表和表之间的关系 一对一.多对一.多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加外键约束和不加外键约束的区别,一对一的外键约束是在一对多的约束上加上唯一约束. ...

  5. ccs之经典布局(二)(两栏,三栏布局)

    接上篇ccs之经典布局(一)(水平垂直居中) 四.两列布局 单列宽度固定,另一列宽度是自适应. 1.float+overflow:auto; 固定端用float进行浮动,自适应的用overflow:a ...

  6. v-bind:value="diy" 添加到 <input type="button" /> 中可以,添加到<button />中不可以,diy是data中的数据

    v-bind:value="diy" 添加到 <input type="button" /> 中可以, 添加到<button />中不可 ...

  7. hadoop安装zookeeper-3.4.12

    在安装hbase的时候,需要安装zookeeper,当然也可以用hbase自己管理的zookeeper,在这里我们独立安装zookeeper-3.4.12. 下载地址:https://mirrors. ...

  8. CDN和浏览器缓存

    1,CDN 旨在解决的最重要的问题是什么,我们称之为网络延迟,通过网络获取资源总是比从本地获取慢,无论服务器是在同一个局域网中还是位于世界的另一个角落,都是如此.这里的速度差异是 IT 行业的一个核心 ...

  9. linux 网卡配置详情

    1.配置文件/etc/hosts(本地主机ip地址映射,可以有多个别名)./etc/services(端口号与标准服务之间的对应关系)./etc/sysconfig/network(设置主机名,网关, ...

  10. windows删除已注册服务

    背景:近日,想要学习mysql主从复制,于是想在本地用多个mysql实例进行试验,试验的过程中总是挫折不断,生手不易,安装了很多实例,测试完成之后,想要删除这些实例. 虽然任务管理器可以停止任务,但是 ...