MVC学习(1)

    活到老学到老,最近开始学习MVC。写点学习笔记加深点影响,废话不多说开始正题。

  1.  在本地数据库建立数据库“zhb”技术分享 数据库中没有表。
  2.  建立解决方案“MvcApplication1” 。在“Models”建立一个实体类“Person”,并新建一个继承”DbContext“的“DBperson”类。在代码中做了很好的注释。代码如下:
    技术分享
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.ComponentModel.DataAnnotations;
     6 using System.Data.Entity;
     7 using System.ComponentModel.DataAnnotations.Schema;
     8 
     9 
    10 namespace MvcApplication1.Models
    11 {
    12     //  [Table("Person")] 的作用是防止在EF生成SQL语句的时候变成复数的形式。 命名空间是在using System.ComponentModel.DataAnnotations.Schema;
    13     [Table("Person")]
    14     /// 实体类Person
    15     public class Person
    16     {
    17         [Key]
    18         //  [Key]个人认为的是主键的一生。这个属性的命名空间是在System.ComponentModel.DataAnnotations;
    19         // 默认的情况下是没有引入到文档中的,要自己引入
    20         public int pid { set; get; }
    21         // 年龄
    22         public int age { set; get; }
    23         // 名称
    24         public string name { set; get; }
    25     }
    26 
    27     /// <summary>
    28     ///  上下文类 继承DbContest
    29     /// </summary>
    30     public class DBperson:DbContext
    31     {
    32         /// <summary>
    33         /// 构造函数 base("zzz") “zzz” 是我连接字符串的name 连接字符串如下。 也可以使用base("name=zzz") 看个人喜欢
    34         ///  <add name="zzz"connectionString="Data Source=127.0.0.1;Initial Catalog=zhb;uid=sa;pwd=123456789;" providerName="System.Data.SqlClient"/>
    35         /// </summary>
    36         public DBperson():base("zzz")
    37         {
    38         }
    39         /// <summary>
    40         /// 定义变量dperson
    41         /// </summary>
    42         public DbSet<Person> dperson { set; get; }
    43     }
    44 }
    View Code

    到此为止实体类建设好了。在数据库中现在还没有Person表。

  3. 到建立控制器了。代码如下:
    技术分享
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.Web.Mvc;
     6 using MvcApplication1.Models;
     7 using System.Data.Entity;
     8 
     9 namespace MvcApplication1.Controllers
    10 {
    11     public class PersonController : Controller
    12     {
    13         //
    14         // GET: /Person/
    15         // 实例化一个DBperson
    16         DBperson db=new DBperson();
    17         public ActionResult Index()
    18         {
    19             // 返回所有的数据。现在数据库中还没有person表。在运行过后,会添加好这个表。这就是所谓的CODER first。
    20             // 添加视图 视图实体是 Person。当你选择模板是LIST时系统会自动填充好很多代码
    21             return View(db.dperson.ToList());
    22         }
    23         
    24         [HttpGet]
    25         public ActionResult Create()
    26         {
    27             //返回到Cre页面ate 
    28             return View("Create");
    29         }
    30 
    31         [HttpPost]
    32         public ActionResult Create(Person person)
    33         {
    34             // 提交新建的数据
    35             
    36             if (ModelState.IsValid)// 判断是合法有效的数据
    37             {
    38                 db.dperson.Add(person);// 添加数据
    39                 db.SaveChanges();// 保存数据
    40                 return RedirectToAction("Index");//跳转到INdex 控制器
    41             }
    42             else
    43             {
    44                 return View("Create");// 不成功 返回Create 一米爱你 
    45             }
    46             
    47         }
    48 
    49         public ActionResult Edit(int id)
    50         {
    51             Person person = db.dperson.Find(id);// 通过ID 找到实体
    52             if (person != null)// 判断是否存在
    53             {
    54                 return View("Edit", person);// 吧Person 实体返回到页面
    55             }
    56             else
    57             {
    58                 return RedirectToAction("Index");//没有找打就返回到index 
    59             }
    60         }
    61         [HttpPost]
    62         public ActionResult Edit(Person p)//  参数名 要和前台的参数名一直。否则会报错。默认是ID
    63         {
    64             db.Entry(p).State = EntityState.Modified;// 更改的状态
    65             db.SaveChanges();//报错
    66             return View("Index",db.dperson.ToList());// 返回页面
    67         }
    68 
    69 
    70 
    71 
    72 
    73     }
    74 }
    View Code

    控制器建好了。

  4. 建立视图。代码如下:
    技术分享
    @model IEnumerable<MvcApplication1.Models.Person>
    
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
    </head>
    <body>
        <p>
            @Html.ActionLink("Create New", "Create")
        </p>
        <table>
            <tr>
                <th>
                    @Html.DisplayNameFor(model => model.age)
                </th>
                <th>
                    @Html.DisplayNameFor(model => model.name)
                </th>
                <th></th>
            </tr>
        
        @foreach (var item in Model) {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.age)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.name)
                </td>
                <td>
                    @Html.ActionLink("Edit", "Edit", new { id=item.pid }) |
                    @Html.ActionLink("Details", "Details", new { id=item.pid }) |
                    @Html.ActionLink("Delete", "Delete", new { id=item.pid })
                </td>
            </tr>
        }
        
        </table>
    </body>
    </html>
    View Code
    技术分享
    @model MvcApplication1.Models.Person
    
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Edit</title>
    </head>
    <body>
        <script src="~/Scripts/jquery-1.7.1.min.js"></script>
        <script src="~/Scripts/jquery.validate.min.js"></script>
        <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
        
        @using (Html.BeginForm()) {
            @Html.ValidationSummary(true)
        
            <fieldset>
                <legend>Person</legend>
        
                @Html.HiddenFor(model => model.pid)
        
                <div class="editor-label">
                    @Html.LabelFor(model => model.age)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.age)
                    @Html.ValidationMessageFor(model => model.age)
                </div>
        
                <div class="editor-label">
                    @Html.LabelFor(model => model.name)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.name)
                    @Html.ValidationMessageFor(model => model.name)
                </div>
        
                <p>
                    <input type="submit" value="Save" />
                </p>
            </fieldset>
        }
        
        <div>
            @Html.ActionLink("Back to List", "Index")
        </div>
    </body>
    </html>
    View Code
    技术分享
    @model MvcApplication1.Models.Person
    
    @{
        Layout = null;
    }
    
    <!DOCTYPE html>
    
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Create</title>
    </head>
    <body>
        <script src="~/Scripts/jquery-1.7.1.min.js"></script>
        <script src="~/Scripts/jquery.validate.min.js"></script>
        <script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
        
        @using (Html.BeginForm()) {
            @Html.ValidationSummary(true)
        
            <fieldset>
                <legend>Person</legend>
        
                <div class="editor-label">
                    @Html.LabelFor(model => model.age)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.age)
                    @Html.ValidationMessageFor(model => model.age)
                </div>
        
                <div class="editor-label">
                    @Html.LabelFor(model => model.name)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.name)
                    @Html.ValidationMessageFor(model => model.name)
                </div>
        
                <p>
                    <input type="submit" value="Create" />
                </p>
            </fieldset>
        }
        
        <div>
            @Html.ActionLink("Back to List", "Index")
        </div>
    </body>
    </html>
    View Code

    视图建好

  5. 配置下默认的路由,代码如下:
    技术分享
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using System.Web.Routing;
    
    namespace MvcApplication1
    {
        public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
                routes.MapRoute(
                    name: "Tbadmin",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Person", action = "Index", id = UrlParameter.Optional }
                );
            }
        }
    }
    View Code

     

  6. 可以F5运行了。结果是为“zhb”新建了一个表,如果变已经存在,则不会有影响。能够添加修改。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。