ASP.NET MVC 4.0 学习2-留言板實現

新增專案實現留言板功能,瞭解MVC的運行機制

1,新增專案

 

2,添加數據庫文件message.mdf

 

Ctrl+W,L 打開資料庫連接,添加存放留言的Atricle表

添加字段,後點擊"更新"後看到新增的Atricle表(Content 應該設置為text)

3,添加ADO.NET實體數據模型 (MVC通過實體數據模型對數據庫中的數據進行增删改查)

    

     

  ADO.NET實體數據模型添加完成。

4,建立Service

我們把對Model中message.mdf數據處理的類單獨放在Service文件夾中,這樣更加方便之後的維護同樣也符合MVC耦合度低的特點,這一步是為Controller中的Action方法做準備。新建Service文件夾,添加messageDBService.cs類(Entity實體和Controller的橋樑):

  

Service類中添加兩個方法,分別實現對數據的讀和寫

  • GetData():讀取並返回數據庫中Article中的數據
  • DBCreate():把接收的數據存放到Article表中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MvcApplication1.Models;  //引用Model命名空間

namespace MvcApplication1.Service
{
    public class messageDBService
    {
        //實例化實體數據
        public Models.messageEntities db=new Models.messageEntities();

        //讀取並返回messageEntity中的數據
        public List<Article> GetData()
        {
            return (db.Article.ToList());
        }
        //把從User接受的數據寫入messageEnitity
        public void DBCreate(string strTitle,string strContent)
        {
            //實例化Artile對象
            Article newData=new Article();

            //給Artile對象的屬性賦值
            newData.Title=strTitle;
            newData.Content=strContent;
            newData.time=DateTime.Now;

            //實體添加到Entity中
            db.Article.Add(newData);
            //保存到數據庫
            db.SaveChanges();

        }
    }
}

4,添加控制器Controller
 

控制器中的Action實現留言板的添加留言查看留言的功能:

  1. Index:調用Service中的GetData方法,返回Article列表
  2. Create:顯示頁面
  3. Create:方法前有[HttpPost]屬性,只有瀏覽器發送POST請求的時候才會執行此方法,調用Service中的CreateDB方法把數據寫到Article表中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication1.Models;
using MvcApplication1.Service;

namespace MvcApplication1.Controllers
{
    public class messageController : Controller
    {
        //實例化Service
        messageDBService data = new messageDBService();

        // GET: /message/
        public ActionResult Index()
        {
            //Article列表
            return View(data.GetData());
        }

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

        [HttpPost]
        public ActionResult Create(string strAtricle, string strContent)
        {
            //調用Service中的Create方法,把數據寫到數據庫中
            data.DBCreate(strAtricle, strContent);
            //重導向到 Action
            return RedirectToAction("Index");
        }
    }
}

5,添加Action對應的View頁面:

View頁面接收Controller傳遞過來的資料,在User提交按鈕的時候把數據傳給Controller

View Index顯示Article內容,更新View如下:

@model IEnumerable<MvcApplication1.Models.Article>

@{
    ViewBag.Title = "留言板";
}
<div>

    <h2>首頁-留言列表</h2>

    @if (Model != null)
    {
        <table>
            <tbody>
                @foreach (var item in Model)
                {
                    <tr>
                        <td>標題:</td>
                        <td>@item.Title</td>
                    </tr>
                    <tr>
                        <td>留言內容:</td>
                        <td>@item.Content</td>
                    </tr>
                    <tr>
                        <td>時間:</td>
                        <td>@item.time</td>
                    </tr>
                }
            </tbody>
        </table>
    }

</div>
   <br />
<div>
    @Html.ActionLink("點擊新增留言", "Create");
</div>

同樣為 Controller中的 Create Action 添加對應的View:

@model IEnumerable<MvcApplication1.Models.Article>
@{
    ViewBag.Title = "Create";
}

<h2>新增留言</h2>
@using (Html.BeginForm("Create", "Message"))
{
    <div>
        @Html.Label("標題")
        @Html.TextBox("strAtricle")
        <br />

        @Html.Label("內容")
        @Html.TextBox("strContent")
        <br />
        <input type="submit" value="送出留言" />
    </div>

}

在~/Views/Shared/_Layout.cshtml(相當於asp.net中的母版頁Master),中添加留言首頁的連接:

  <ul id="menu">
                        <li>@Html.ActionLink("首頁", "Index", "Home")</li>
                        <li>@Html.ActionLink("關於", "About", "Home")</li>
                        <li>@Html.ActionLink("連絡", "Contact", "Home")</li>
                        <li>@Html.ActionLink("留言", "index", "Message")</li>
                    </ul>

以上完成了一個簡單的留言板。

首頁:

點擊"新增留言", @Html.ActionLink("點擊新增留言", "Create"); 程式根據Routing規則找到對應Controller中的Action

  → →保存到DB



通過留言板我們看到了MVC項目的運行流程如下:

ASP.NET MVC 4.0 学习2-留言板實現

时间: 2024-10-29 10:12:02

ASP.NET MVC 4.0 学习2-留言板實現的相关文章

ASP.NET MVC 4.0 学习4-ActionResult

一,Controller簡介 Controller擔任了資料傳遞的角色,負責流程控制,決定存取哪個Model以及決定顯示哪個View頁面,即ASP.NET MVC中有關於『傳遞』的任務皆由Controller負責. Controller的執行階段負責呼叫執行Model中的資料處理,並把處理結果數據傳送到對應的View. Controller即為一個Class類,類中包含很多Method方法,方法中進行流程處理. Controller有以下特點: 類必須是Public公開類 類名稱必須以Contr

ASP.NET MVC 4.0 学习6-Model Binding

一,ViewData,ViewBag與TempData ASP.NET MVC架構中,通過繼承在Controller中的ViewData,ViewBag和TempData和View頁面進行資料的存取,並且適合於少量的資料傳遞. 1.1  ViewBag ViewBag可以產生動態屬性,我們新建項目中看到ViewBag的使用方法: Controller中賦值:ViewBag.Title=”首頁”  View中獲取值 @ViewBag.Title 1.2  ViewData Controller中賦

ASP.NET MVC 4.0 学习3-Model

Model負責獲取數據庫中的資料,並對數據庫中的數據進行處理. MVC中有關 數據庫 的任務都由Model來完成,Model中對數據資料進行定義,Controller和View中都會參考到Model,從而對數據庫進行增刪改的操作.      Model不需要依賴Controller或是View,所以Model的獨立性很高,我們可以把Model獨立出來一個專案. 1,Model中添加實體數據模型 DB中添加新的DataBase:message,添加Table:MessageBoard USE [m

ASP.NET MVC 4.0 学习4-Code First

之前我們需要用到的數據,通過添加Entity實體數據模型把數據庫中需要的Database拉到項目中如下圖, 而就是Code First就是相對於這種處理數據的方法而言的 Code First更加準確的解讀是開發人員只需要編寫程式(Code Only),系統會自動建立模型和數據庫 我們來新建一個專案看一下Code First的具體實現 1,新專案的Model中加入類別MessageBoard存儲留言信息 MessageBoard.cs中添加字段屬性: using System; using Sys

ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习

首页 头条 文章 频道                         设计频道 Web前端 Python开发 Java技术 Android应用 iOS应用 资源 小组 相亲 频道 首页 头条 文章 小组 相亲 资源 设计 前端 Python Java 安卓 iOS 登录 注册 首页 最新文章 经典回顾 开发 Web前端 Python Android iOS Java C/C++ PHP .NET Ruby Go 设计 UI设计 网页设计 交互设计 用户体验 设计教程 设计职场 极客 IT技术

ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习

一.天降神器“剃须刀” — Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity模板引擎. Razor在减少代码冗余.增强代码可读性和Visual Studio智能感知方面,都有着突出的优势.Razor一经推出就深受广大ASP.Net开发者的喜爱. 1.2 Razor的语法 (1)Razor文件类型:Razor支持两种文件类型,分

asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致的概括下. (1). ActionResult(base):最基本的Action类型,返回其他类型都可以写ActionResult. (2). ContentResult:返回ContentResult用户定义的内容类型. public ActionResult Content() { return

我要学ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击

我要学ASP.NET MVC 3.0(十三): MVC 3.0 防止跨站点请求伪造 (CSRF) 攻击 概述      众所周知,ASP.Net MVC程序在浏览器运行时产生了标准的Html标签,包括浏览器要发送的关键数据等内容都在Html内容里面,听起来不错,但是假如我们仿造类似的Html内容,更改里面关键数据,在浏览器运行起来会怎么样呢?好下面我们就做这样一个例子.       CSRF攻击例子 首先我们拿以前做好的person/edit作为例子 先看控制器代码 //初始页面        

Asp.net mvc 4.0 高级编程 百度云下载

Asp.net mvc 4.0 高级编程 百度云下载地址:链接:http://pan.baidu.com/s/1o6zFvOe 密码:xyss 1.基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2.采用MVC的框架模式,具有耦合性低.重用性高.生命周期成本低.可维护性高.有利软件工程化管理等优点 3.采用WebAPI,客户端完全摆脱了代理和管道来直接进行交互 4.采用EasyUI前台UI界面插件,可轻松的打造出功能丰富并且美观的UI