一個簡單的.NET MVC 實例


      久聞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

View Code
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文件中更改,

效果

 

 

實例下載

 FirstMvc.rar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM