一个简单的.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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值