好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Guestbook

Guestbook

Guestbook

留言板(guestbook)比较简单:何人何时留何言。

1.运行 vs2012,选择 MVC 4 模板,输入项目名称: x01.Guestbook ,一路默认即可。

2.在项目上右击,从弹出菜单上选择 NuGet 管理器,分别安装 EntityFramwork 和   EntityFramwork.SqlServerCompact,以便使用 DbContext。

3.在 App_Data 文件夹下,创建 Compact 数据库  Guestbook.sdf 。表  Entry ,字段  Id, Name, Message, Date 。

4.在 Models 文件夹下,添加 GuestbookModel.cs 文件,内容如下:

GuestbookModel

 using   System;
  using   System.Collections.Generic;
  using   System.Data.Entity;
  using   System.Linq;

  namespace   x01.Guestbook.Models
{
      public   class   GuestbookContext : DbContext
    {
          public   GuestbookContext()
            :   base ( "  Guestbook  "  )
        {
        }

          public  DbSet<Entry> Entries {  get ;  set  ; }
    }

      public   class   Entry
    {
          public   int  Id {  get ;  set  ; }
          public   string  Name {  get ;  set  ; }
          public   string  Message {  get ;  set  ; }
          public  DateTime Date {  get ;  set  ; }
    }

      public   interface   IGuestbookReponsitory
    {
        IList <Entry>  GetEntries();
        Entry Find(  int   id);
          void   Add(Entry entry);
    }

      public   class   GuestbookReponsitory : IGuestbookReponsitory
    {
        GuestbookContext _context  =  new   GuestbookContext();

          public  IList<Entry>  GetEntries()
        {
              var  result =  from  e  in   _context.Entries
                           orderby   e.Date descending
                           select   e;
              return  result.Take( 20  ).ToList();
        }

          public  Entry Find( int   id)
        {
              var  r =  _context.Entries.Find(id);
              return   r;
        }

          public   void   Add(Entry entry)
        {
            entry.Date  =  DateTime.Now;
            _context.Entries.Add(entry);
            _context.SaveChanges();
        }
    }
} 

 using   System;
  using   System.Collections.Generic;
  using   System.Data.Entity;
  using   System.Linq;

  namespace   x01.Guestbook.Models
{
      public   class   GuestbookContext : DbContext
    {
          public   GuestbookContext()
            :   base ( "  Guestbook  "  )
        {
        }

          public  DbSet<Entry> Entries {  get ;  set  ; }
    }

      public   class   Entry
    {
          public   int  Id {  get ;  set  ; }
          public   string  Name {  get ;  set  ; }
          public   string  Message {  get ;  set  ; }
          public  DateTime Date {  get ;  set  ; }
    }

      public   interface   IGuestbookReponsitory
    {
        IList <Entry>  GetEntries();
        Entry Find(  int   id);
          void   Add(Entry entry);
    }

      public   class   GuestbookReponsitory : IGuestbookReponsitory
    {
        GuestbookContext _context  =  new   GuestbookContext();

          public  IList<Entry>  GetEntries()
        {
              var  result =  from  e  in   _context.Entries
                           orderby   e.Date descending
                           select   e;
              return  result.Take( 20  ).ToList();
        }

          public  Entry Find( int   id)
        {
              var  r =  _context.Entries.Find(id);
              return   r;
        }

          public   void   Add(Entry entry)
        {
            entry.Date  =  DateTime.Now;
            _context.Entries.Add(entry);
            _context.SaveChanges();
        }
    }
} 

5.在 Controllers 文件夹下,添加 GuestbookController.cs 文件,内容如下:

GuestbookController

 using   System.Web.Mvc;
  using   x01.Guestbook.Models;

  namespace   x01.Guestbook.Controllers
{
      public   class   GuestbookController : Controller
    {
        IGuestbookReponsitory _reponsitory  =  new   GuestbookReponsitory();

          public   ActionResult Index()
        {
              var  m =  _reponsitory.GetEntries();
              return   View(m);
        }

          public   ActionResult Add()
        {
              return   View();
        }

        [HttpPost]
          public   ActionResult Add(Entry entry)
        {
              if   (ModelState.IsValid)
            {
                _reponsitory.Add(entry);
                  return  RedirectToAction( "  Index  "  );
            }
              return   View(entry);
        }

    }
} 

 using   System.Web.Mvc;
  using   x01.Guestbook.Models;

  namespace   x01.Guestbook.Controllers
{
      public   class   GuestbookController : Controller
    {
        IGuestbookReponsitory _reponsitory  =  new   GuestbookReponsitory();

          public   ActionResult Index()
        {
              var  m =  _reponsitory.GetEntries();
              return   View(m);
        }

          public   ActionResult Add()
        {
              return   View();
        }

        [HttpPost]
          public   ActionResult Add(Entry entry)
        {
              if   (ModelState.IsValid)
            {
                _reponsitory.Add(entry);
                  return  RedirectToAction( "  Index  "  );
            }
              return   View(entry);
        }

    }
} 

6.在 Views/Guestbook 下,添加 Indes.cshtml, Add.cshtml 文件,内容如下:

Index

@model IEnumerable<x01.Guestbook.Models.Entry> 

@{
    ViewBag.Title  =  "  Index  "  ;
}

 <h2>Index</h2>

<p> 
    @Html.ActionLink(  "  Add Message  " ,  "  Add  "  )
 </p>

<section style= "  background-color:#fcfcfc; font-size:large;  " > 
    @foreach (  var  item  in   Model)
    {
         <p><b>@item.Name (@item.Date.ToString()): </b><br />@item.Message</p> 
    }
 </section>

@model IEnumerable<x01.Guestbook.Models.Entry> 

@{
    ViewBag.Title  =  "  Index  "  ;
}

 <h2>Index</h2>

<p> 
    @Html.ActionLink(  "  Add Message  " ,  "  Add  "  )
 </p>

<section style= "  background-color:#fcfcfc; font-size:large;  " > 
    @foreach (  var  item  in   Model)
    {
         <p><b>@item.Name (@item.Date.ToString()): </b><br />@item.Message</p> 
    }
 </section>

Add

 @model x01.Guestbook.Models.Entry

@{
    ViewBag.Title  =  "  Add  "  ;
}

 <h2>Add</h2>

<form method= "  post  " > 
    Name:
     <br /> 
    @Html.TextBoxFor(m  =>  m.Name)
     <br /> 
    Message:
     <br /> 
    @Html.TextAreaFor(m  =>  m.Message)
     <br />
    <input type= "  submit  "  value= "  Submit  "  />
</form>

 @model x01.Guestbook.Models.Entry

@{
    ViewBag.Title  =  "  Add  "  ;
}

 <h2>Add</h2>

<form method= "  post  " > 
    Name:
     <br /> 
    @Html.TextBoxFor(m  =>  m.Name)
     <br /> 
    Message:
     <br /> 
    @Html.TextAreaFor(m  =>  m.Message)
     <br />
    <input type= "  submit  "  value= "  Submit  "  />
</form>

7.修改 Shared/_layout.cshtml 文件中的菜单如下:

<li>@Html.ActionLink("Guestbook","Index","Guestbook")</li>

 按 F5 运行无误,则宣告完成。

 

 

分类:  C#

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Guestbook的详细内容...

  阅读:42次