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