zoukankan      html  css  js  c++  java
  • java的MVC与C#

    Views:

    @{

        Layout = "~/Views/Shared/_Layout.cshtml";

    }

    @{

        ViewBag.Title = "Index";

    }

    <h1>Index</h1>

    <p>This is first view</p>

    <div>@ViewBag.controller</div>

    <div>@ViewBag.action</div>

    Controllers:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Web;

    using System.Web.Mvc;

     

    namespace MVCMovie.Controllers

    {

        public class HollerWorldController : Controller

        {

            // GET: HollerWorld

            public string Index()

            {

                return "看这里";

            }

            public string Welcome(string name,int numTimes=1)

            {

                return HttpUtility.HtmlEncode("Hello"+name+",numTimes="+numTimes);// 使用上面的代码HttpUtility.HtmlEncode以防止恶意输入

            }

            public string Hello(string name ,int ID)

            {

                return HttpUtility.HtmlEncode("Hello "+name+"ID is" +ID);

            }

            //        1.控制器中跳转:

            //Redirect(url) 直接跳转到URl

            //比如 action 里 return Redirect("http://www.baidu.com") 直接跳转到baidu.

            //RedirectToAction("action",new{id=6,name=helloK

            //    }) 跳转到本control的另外一个action 可以带参数.

            //2.页面跳转:

            //Html.Actionlink("详细","action",new{id=6,name=helloK

            //}) 跳转到control的另外一个action.

     

            public ActionResult GotoFirstView(string controller, string action)

            {

                return RedirectToAction("FirstView",new {  controller, action });//重定向跳转FirstView action

            }

            public ActionResult FirstView(string controller,string action )

            {

                //通过参数传递数值到view

                ViewBag.controller = controller;

                ViewBag.action = action;

                //页面跳转

                return View("~/Views/HollerWorld/Index.cshtml");

            }

        }

    }

    Routeconfig:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Web;

    using System.Web.Mvc;

    using System.Web.Routing;

     

    namespace MVCMovie

    {

        public class RouteConfig

        {

            public static void RegisterRoutes(RouteCollection routes)

            {

                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

     

                //routes.MapRoute(

                //    name: "Default",

                //    url: "{controller}/{action}/{id}",

                //    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

                //);

                routes.MapRoute("Hello", "{controller}/{action}/{id}", new { controller = "HollerWorld", action = "Welcome", id = UrlParameter.Optional });//自定义路由

                //routes.MapRoute("newRoute","HelloWorld/First{action}", new { controller = "HollerWorld" });

            }

     

        }

    }

    Models:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Web;

    using System.Data.Entity;

     

    namespace MVCMovie.Models

    {

        public class Movie

        {

            public int ID { get; set; }

            public string Title { get; set; }

            public DateTime ReleaseDate { get; set; }

            public string Genre { get; set; }

            public decimal Price { get; set; }

     

        }

        //继承EF里的一个类,可以理解为一个数据库对象的实例,在 EF 中,无需手动的拼接 SQL 语句对数据库进行增删改查,而是通过 DbContext 来进行相应操作。

        public class MovieDBContext : DbContext

        {

            public DbSet<Movie> Movies { get; set; }

        }

    }

    Web.config:

    <!--<connectionStrings>

        <add name="MovieDBContext" connectionString="Data Source=(LocalDb)MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Movies.mdf" providerName="System.Data.SqlClient" />

      </connectionStrings>-->

    asp.net是一种用来快速创建动态Web网站的技术,不是语言,它使用C#(或者vb.net)为开发语言。C#是一种面向对象编程语言;net只是一个框架,.net中所有的编程语言,比如c# vb.net等编写的程序必须在.net framework框架下运行。

    三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合"的思想。
      1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
      2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
      3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。
    注:(内聚:一个模块内各个元素彼此结合的紧密程度;耦合:一个软件结构内不同模块之间互连程度的度量)

    三层结构不是.NET的专利,也不是专门用在数据库上的技术。它是一种更加普适的架构设计理念。

    一、mvc原理 
      mvc是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层。 
    1、模型(model)它是应用程序的主体部分,主要包括业务逻辑模块(web项目中的Action,dao类)和数据模块(pojo类)。模型 与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性 
    2、视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成 
    3、控制器(controller)接收来自界面的请求 并交给模型进行处理 在这个过程中控制器不做任何处理只是起到了一个连接的做用 

    二、MVC的优点 
    1、可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。 
    2、视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。 
    3、模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。 
    4、潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。 

    三、MVC的不足之处 
    1、增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。 
    2、视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。 
    3、视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。 
    4、目前,一般高级的界面工具或构造器不支持模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。

    分类: MVC

    实际上不管是mvc中的m,还是“三层架构”中的model,都不是从数据库表出发的,都是从前端需求出发的。只不过这两种做法针对的场景也不同。前者局限在理清前端界面程序开发思路上,后者局限在理清整个系统网络服务的开发思路上。可以组合,也可以仅仅使用一种。三层中的m,本来就可以用到mvc中。但是它显然不等于mvc中的那个m。而 mvc 中的 m 按说应该比三层中的 m 更多、更丰富(后者可以当然可以被前者所继承)。三层中的m 按说应该比数据库表的数量还多很多、还丰富很多。

    如果你发现一个项目的m 很少,甚至跟数据库表的数量接近,那么你遇到了一个“不管如何分层,都从数据库增删改查为思维出发点”的团队的产品。

     

     

     

    将使用名为.NET Framework 数据访问技术Entity Framework来定义和使用这些模型的类。 实体框架 (通常称为 EF) 支持开发模式称为Code First

    作为新手小菜鸟的我,只想记录,便于温故知新,如有错误或疏忽,请留言,审查后改正,谢谢各位大佬
  • 相关阅读:
    ubuntu: no module named _sqlite
    mysql慢查询分析工具 pt-query-digest
    vue中的时间修饰符stop,self
    面试题 —— Ajax的基本原理总结
    es6笔记 day6-Symbol & generator
    类(class)和继承
    es6笔记 day4---模块化
    es6笔记 day3---Promise
    es6笔记 day3---对象简介语法以及对象新增
    es6笔记 day3---数组新增东西
  • 原文地址:https://www.cnblogs.com/zhangsonglin/p/10436550.html
Copyright © 2011-2022 走看看