asp.net MVC + linq to Entity简单教程(二)MVC的简单操作

  MVC的概念不多说,model + view + Controller 有人说这个和三层没有什么区别啊。也是分三层写的啊。MVC中model层我们真的没有做什么,基本就是建立数据模型,而controller层是逻辑判断和数据操作,而View则是简单的页面显示。这么一看,和简单三层没有区别。其实我们只要仔细的研究一下就会发现,MVC更想是对WEB层的一个再分,就是把WEB进行了一个三层分化。我不知道我这样说对不对,我是这么理解的。

  好了,更多的概念不多说,下面介绍一下,MVC的简单的操作。

  个人认为,MVC做一些网站或是新闻列表类的项目,速度非常快,如果你有一个非常好的美工同伴,你只要写好C层,省下的就都不用你管了。因为如果你的表结构不复杂,Entity已经把model层全给你写好了。你什么都不用做了。

  先简单说一下 Global.asax文件中的 public static void RegisterRoutes(RouteCollection routes)的设置,其实他的设置很有意思,也很简单,说白了,就是你要在页面间传的值的格式和值的名字。

  如下:

   

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "TwoValue",
                "{controller}/{action}/{schoolcode}/{selects}"
            );

            routes.MapRoute(
                "ThreeValue",
                "{controller}/{action}/{schoolcode}/{selects}/{id}"
            );

            routes.MapRoute(
                "FourValue",
                "{controller}/{action}/{UserName}/{UserPwd}/{UserType}/{schoolcode}"
            );

            routes.MapRoute(
                "FiveValue",
                "{controller}/{action}/{schoolcode}/{type}/{num}/{username}/{userphone}"
            );

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

        }

  这里的写法与语法,不多说,网上很多。只说明一点,我这里设置了很多,有人会说,MVC怎么认啊。万一我传的是一个值,他按二个值给我传怎么办呢。MVC还是很聪明的,他会根据你这里面的方法的顺序和值的配对关系,以及值名进行查找最匹配的来进行传值,不过有一点,要说明的是,这里定义的值名,你在C中进行写的时候,一定要与这里的名一样,如

  

routes.MapRoute(
                "TwoValue",
                "{controller}/{action}/{schoolcode}/{selects}"
            );
  这是传二个值的简单方法。我们看一下,前二个值,是C层和C层中的action的名字,这二个可以根据你自己情况去写,可是后面的二个名字,schoolcode,selects就必须要和这个一样,

  

/// <summary>
        /// 家长通讯录
        /// </summary>
        /// <param name="schoolcode">学校标识</param>
        /// <param name="selects">老师teach_id</param>
        /// <returns></returns>
        public ActionResult ParentIndex(string schoolcode,string selects)
        {
            ViewData["schoolcode"] = schoolcode;
            ViewData["teach_id"] = selects;

            return View();
        }

   看到了吧,你可以试着,将schoolcode,selects改一下名,看会有什么效果。


   下面我们来看一下C层的,C层的其实很简单,根据不同的要求去写不同的方法,一般都是ActionResult这样的,他的返回值,有很多种,如上面程序中的,return View();

           基本上就是返回一个空了。还有一些如return VIew(aaa);,return content(""),等方法,这个在以后会看到。

    这个不多说了,这里我要说一下,在生成V层时一些注意的地方,生成V层一般,是点C层的方法,我后可以自动生成相关的页面了。

  

  

   View Name,就是你要生成的V层的文件名,这里我主要要说的,就是我展的这个下拉列表,这里是你所有model模型的表结构,在这里你可以为你这个V层的页面选择一下,它显示的数据是哪个表的,这里注意的事,这里的简单,是单表,如果是多表怎么办呢。只能自己去models里建立一个类文件,然后将数据存成它的格式就行了。就像三层里我们写的一样。

   

  选择完,数据类之后,我们就要选择,V层页面显示的样子了,这里很重要也很有意思,这几个选项目,大家一目了然,建立,删除,浏览,编辑,空,列表。如果你做简单的页面,只要选择就行,他就会给你生成一个例子,很简单,不过列表没有分页。我这里要说的,因为生成的样子一般不会与我们要的样子一样,所以大家感觉没什么,其实不然,你选择之后,它会在V层的页面page部分,有所不同,这个不同就决定了,你页面显示的不同。

  下面是三个图,大家看一下,第一个图,是不选数据类,第二个图,是选数据类,但是选择一个空,第三个是选数据类,而选择了列表,大家看一下,他们的区别

  

  (图1)

(图2)


(图3)

  大家看到区别了吧。这个在以后的具体程序中,我们也会说到,列表什么样,详细页面什么样,空什么样。这里主要要说明的是,就是让大家在生成V层的时候,选择一下自己要的类别,这样对程序开发有一个便捷性

  这里要提醒大家一点的,就是我上面提到的,如果我要提的数据不是一个单表,而且是一个多表查询,查询想要得到的数据,还是从多表中取出的,这怎么办呢。我前面说到了,就是在model中生成一个文件,如下面的程序,就是我的写的一个,这里面的三个值,一个是学生标识种子,一个学生姓名,一个是家长电话,是从二个表中取的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace En_MVC_test.Models
{
    public class stu_kind
    {
        /// <summary>
        /// 标识种子
        /// </summary>
        public int id { get; set; }

        /// <summary>
        /// 用户姓名
        /// </summary>
        public string studentName { get; set; }


        /// <summary>
        /// 用户电话
        /// </summary>
        public string stuKindPhone { get; set; }

    }
}

这样就行了,这时候,你保存,到上面的data class里去找,你会发现没有,这个时候,你把这个项目重新编译一下就会出来了。

这一章就到这里,下一章,将简单介绍一下linq to Entity的语法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值