博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC3.0原理学习及总结
阅读量:6582 次
发布时间:2019-06-24

本文共 2148 字,大约阅读时间需要 7 分钟。

 

  之前一直是用WebForm做的开发,现在学习MVC,感觉还是WebForm简单啊。直接拖控件双击写代码。不过MVC就不用控件了,我想更能够体现出一个人的水平。感觉自己现在就是菜鸟一个。不想当菜鸟的学一下MVC吧,还是有用的。

  MVC类似于java里面的Struts框架。分为M(model)模型 、V(view)视图、C(control)控制,以前以为MVC就是所谓的三层架构模式,其实不然,他们是不同的开发模式。MVC开发的Web应用程序,在浏览器里没有.html或.aspx等结尾的文件形式,它是通过路由原理实现的。这样有利于收索引擎的收录,就不用做静态化或伪静态了。

  路由原理的代码在Global.asax中。

public static void RegisterGlobalFilters(GlobalFilterCollection filters)

        {
            filters.Add(new HandleErrorAttribute());
        }

        public static void RegisterRoutes(RouteCollection routes)

        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");  //关键代码

            routes.MapRoute(

                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

        }

  数据库操作用的是Entity Framework,所以必须引入这个类库。

  在Controllers里面所写的方法对应这浏览器里的后缀。例如下面的方法,对应Http:locahost/***/Logon/

public ActionResult Logon()

        {
            return View(new User());
        }
        [HttpPost]
        public ActionResult Logon(string UserName, string Password, string ReturnUrl)
        {
            if (ModelState.IsValid)
            {
                if (myMembership.UserLogon(UserName,Password))
                {
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    ModelState.AddModelError("UserName", "用户名或密码错误");
                    return View();
                }
            }
            else
            {
                return View();
            }
        }

  在实际项目中,我们一般还是加了一层用于数据库的访问。

    /// <summary>

    /// 数据库实体模型
    /// </summary>
    public class PetsStoreEntities:DbContext
    {
        /// <summary>
        /// 角色实体集
        /// </summary>
        public DbSet<Role> Roles { get; set; }

     }

public class RoleRepository

    {
        private PetsStoreEntities petsStoreDB = new PetsStoreEntities();  //新建实体

        /// <summary>

        /// 获取所有的角色
        /// </summary>
        /// <returns></returns>
        public List<Role> Roles()
        {
            return petsStoreDB.Roles.OrderByDescending(r => r.ID).ToList();
        }

        /// <summary>

        /// 根据ID获取角色
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public Role GetByID(int id)
        {
            return petsStoreDB.Roles.Find(id);
        }
    }

  View层用@符号代表变量,如@html.TextBoxFor()就是一个文本框。

 

  上班的时候写的,感觉工作太无聊了。都上班一个半月了,还没有开始做一个真正的项目,哎。全是自己在学习,感觉没有机会练手,水平提不高啊。看别人的代码,看了过一段时间又忘了,很悲剧,所以我决定还是用博客记录学习的东西,边学边记,以后还可以温习。最近闲的无聊,在猪八戒网上接了一个抽奖系统,做的过程中还是遇到了很多问题。不过边做也边学习了,还要感谢破狼师兄啊,给了我很多指点。这个项目快完工了。

转载于:https://www.cnblogs.com/dream844/archive/2011/12/15/2288611.html

你可能感兴趣的文章
Juniper 高级选项
查看>>
编程能力的四种境界
查看>>
编译安装mysql
查看>>
在windows上秒开应用程序
查看>>
【20180611】MySQL OOM
查看>>
Python面向对象编程(一)
查看>>
决心书
查看>>
如何把图片上的文字转换成word?
查看>>
7z命令行
查看>>
C语言编程实现 输入一个非负整数,返回组成它的数字之和(递归方法)
查看>>
c3p0
查看>>
我的友情链接
查看>>
引号-下划线,连接多个变量
查看>>
我的友情链接
查看>>
38线程1-Thread-local-Timer
查看>>
处理svn的 File '/aa' is out of date
查看>>
解决 Ubuntu 16.04 LTSSublime text3中文问题
查看>>
mysql主从复制实现数据库同步
查看>>
面试-1
查看>>
CentOS自动登录Gnome
查看>>