1. 程式人生 > >c# MVC例子學習必看 一個簡單的.NET MVC 例項

c# MVC例子學習必看 一個簡單的.NET MVC 例項

http://www.cnblogs.com/lucky_hu/archive/2012/03/31/2426231.html

 久聞MVC的大名,只是一直沒有去研究過。過去自己用的最多的還是.NET WebForm,比較習慣三層架構。由於最近公司將會使用到MVC框架做一些專案,所以自己也開始接觸和學習。看了一些教程,大體搞清楚了M-V-C的大致意思,大致瞭解了下這個架構,但不得不承認有些具體的細節地方和WebFrm還是有差別的,這裡只是簡單做一個例項,讓它跑起來。看了一些例項,多數都是用的是LinqToSql,這裡用的是ADO的。感覺這樣更順手些,呵呵。

由於之前做過PHP程式,所以對於前臺頁面的展示方式還是容易理解的。只是MVC框架裡,有些預設的路由規則(當然是可以自定義的),這個規則比較特別

好了,直接來個例項吧!

首先,新建一個空的MVC專案,如圖,這裡是MVC 2.0版

這裡命名為"FirstMvc" ,自動新增好了專案的目錄結構

在"Controller"目錄下面新建一個控制器,命名為"MemberController.cs"

同時在"View"目錄下新增相應的檢視,這裡新增一個Index

資料邏輯的操作基本上是在控制器裡面完成的,這裡就是在MemberController.cs實現。

為了更加真實,我們也在Model目錄下面構建一個實體類,命名為Member.cs

好了,準備工作做好,就開始吧

前臺——View

複製程式碼
<%@ Page Language
="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <style type="text/css"> table
{ width: 50%; border-top: 1px solid #e5eff8; border-right: 1px solid #e5eff8; margin: 1em auto; border-collapse: collapse;} td { color: #678197; border-bottom: 1px solid #e5eff8; border-left: 1px solid #e5eff8; padding: .3em 1em; text-align: center;}</style> <script src="http://www.cnblogs.com/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <title>Index</title> <script language="javascript" type="text/javascript"> $(document).ready(function () { $("#Button1").click(function () { var msg = "您好,使用者" + $("#loginName").val() + ",\n"+ "請記好您的密碼:" + $("#passWord").val() + ",\n"+ "你的使用者編號為:" + $("#namelist").val(); alert(msg); }) }) </script> </head> <body> <div> <h2> 完善下面的資訊</h2> <table id="MemberArea"> <thead> <tr> <td colspan="2"> <h3> 使用者註冊</h3> </td> </tr> </thead> <tbody> <tr> <td> 登入名 </td> <td> <%=Html.TextBox("loginName")%> </td> </tr> <tr> <td> 使用者名稱 </td> <td> <%=Html.TextBox("userName")%> </td> </tr> <tr> <td> 密碼 </td> <td> <%=Html.Password("passWord")%> </td> </tr> <tr> <td> 真實姓名 </td> <td> <%=Html.DropDownList("namelist")%> </td> </tr> <tr> <td colspan="2" align="center"> <br /> <input type="button" id="Button1" value="確定" /> </td> </tr> </tbody> </table> </div> </body> </html>
複製程式碼

後臺——Controller

複製程式碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using FirstMvc.Models;//注意新增引用
namespace FirstMvc.Controllers
{
    /// <summary>/// 第一個MVC架構例項
    /// 最近接觸MVC,看到大多數教程採用
    /// LinqToSql,這裡寫一個ADO方式的
    /// Author:LuckyHu
    /// Date:2012-03-30
    /// </summary>    public class MemberController : Controller
    {
        //// GET: /Menber/

        //定義一些全域性變數        string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        SqlConnection conn = null;
        SqlCommand cmd = null;
        SqlDataReader sdr = null;

        public ActionResult Index()
        {
            Models.Member member = new Models.Member();

            sdr = GetData();
            int uid = 0;
            string name = "";
            IDictionary<int, string> nameList = new Dictionary<int, string>();
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            try
            {
                while (sdr.Read())
                {
                    uid = int.Parse(sdr["uid"].ToString());
                    name = sdr["name"].ToString();
                    nameList.Add(uid, name);
                }
            }
            catch (SqlException ex)
            {
                Response.Write("<script> var ex = " + ex.ToString() + "; alert(ex);</script>");
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            SelectList selectNameList = new SelectList(nameList, "Key", "Value");//構造一個下拉列表的鍵值對            ViewData["namelist"] = selectNameList;
            return View();
        }
        /// <summary>///  構造測試資料
        /// </summary>/// <returns></returns>        public SqlDataReader GetData()
        {
            conn = new SqlConnection(connStr);
            string sql = "select * from users";
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            try
            {
                cmd = new SqlCommand(sql, conn);
                sdr = cmd.ExecuteReader();
            }
            catch (SqlException ex)
            {
                Response.Write("<script> var ex = " + ex.ToString() + "; alert(ex);</script>");
            }
            return sdr;
        }
    }
}
複製程式碼

 實體層——Model

複製程式碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace FirstMvc.Models
{
    public class Member
    {
        //Fields        private int uid_ = 0;
        private string name_ = "";
        private int jib_ = 0;
        private string email_ = "";
        private string qq_ = "";
        private DateTime rdage_;
        private DateTime ndate_;



        //Properties        public int Uid_
        {
            get { return uid_; }
            set { uid_ = value; }
        }

        public string Name_
        {
            get { return name_; }
            set { name_ = value; }
        }

        public int Jib_
        {
            get { return jib_; }
            set { jib_ = value; }
        }

        public DateTime Rdage_
        {
            get { return rdage_; }
            set { rdage_ = value; }
        }

        public string Email_
        {
            get { return email_; }
            set { email_ = value; }
        }
        public string Qq_
        {
            get { return qq_; }
            set { qq_ = value; }
        }

        public DateTime Ndate_
        {
            get { return ndate_; }
            set { ndate_ = value; }
        }

        //Construcution        public Member()
        {

        }
        //Function        public Member(int uid, string name, int jib, string email, string qq, DateTime rdage, DateTime ndate)
        {
            this.uid_ = uid;
            this.jib_ = jib;
            this.email_ = email;
            this.qq_ = qq;
            this.rdage_ = rdage;
            this.ndate_ = ndate;
        }
    }
}
複製程式碼

這裡資料庫訪問使用的傳統的ADO的,很多教程使用的LinqToSql的。

MVC框架和WebFrom之間有差異,可能剛開始不是很好理解,但是它們之間確實也有很多公用的地方。

這個時候,我們別忘了配置路由,在Global.asax檔案中更改,

效果

例項下載

http://download.csdn.net/download/sayesan/10051343