Java进击C#——应用开发之Asp.net MVC

本章简言

上一章笔者讲到有关Asp.NET的知识点。了解Asp.NET基本的知识点之后,我们于来读书有关C#的MVC框架就概括多了。显然本章就是来介绍一下有关Asp.NET
MVC。对于MVC的思考笔者相信大家早就特别理解了。笔者在此地虽不多说了。我来只同学做Asp.NET开发的。他以及我说了千篇一律句话——我还急忙忘了HTML了。上同样节中我们掌握做Asp.NET。用纯HTML那么笔者认为您必会为人看是SB。对于喜欢纯手工来写界面设计的丁来讲,Asp.NET
MVC
决对不见面给你失望。而本文作者可能还会见就此到有的struts2框架的文化来比较一下。不多说了。进入本章的情吧。

Global.asax文件

在讲Asp.NET
MVC之前我们来拘禁一下一个文书。就是Global.asax文件。那为什么而谈是文件也?而这个文件同时产生什么打算吗?Global.asax文件全名为大局应用程序类。他跟Asp.NET
MVC并没有直接的涉。Asp.NET常常为会为此到。想使创造他也酷粗略。选中项目右击》添加》新建起。

图片 1

点击上加依掉:

图片 2

双击Global.asax:

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

namespace WebExample
{
    public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {

        }

        protected void Session_Start(object sender, EventArgs e)
        {

        }

        protected void Application_BeginRequest(object sender, EventArgs e)
        {

        }

        protected void Application_AuthenticateRequest(object sender, EventArgs e)
        {

        }

        protected void Application_Error(object sender, EventArgs e)
        {

        }

        protected void Session_End(object sender, EventArgs e)
        {

        }

        protected void Application_End(object sender, EventArgs e)
        {

        }
    }
}

看了面的代码。笔者相信就从名字就是可能看到一二。什么意思吧?在采用起来履行的时会错过调用Application_Start方法而独自实行同样不良。而每次一请求的时段会去调用Application_BeginRequest方法。当用应关团的时刻,会失去调用Application_End。如果做B/S开发不知晓Session的语句,那么笔者也无法了。所以对Session_Start方法调用,笔者就无多说了。 是不是当JAVA跟的Web.xml的监听事件闹少数像吗。

Asp.NET MVC

笔者于学习Asp.NET MVC的当儿。visual studio的Asp.NET
MVC例子也笔者做了颇非常的奉献。让我们看一下visual
studio的列子来打听一下Asp.NET
MVC吧。什么样子创建项目。不用笔者于讲话了。直接扣一下新建项目之对话框吧。

图片 3

规定之后。会弹出下列对话框。

 图片 4

俺们好见到上面的大半独选择。

拖欠:表示建立一个什么还尚未底Asp.NET MVC。

着力:表示建立一个极度中心可开之Asp.NET MVC。

旁的:是面向不同工作的例证。

笔者选取之中也Internet 应用来打听关于Asp.NET
MVC的文化。下面就新建的档次结构。

图片 5

App_Data文件夹:用于存放数据文件。如SQL server的MDF文件的接近。

App_Start文件夹:这个文件夹存放了片Asp.NET MVC开始要执行之配置类。

Content文件夹:存放有有关主题的文书。如CSS文件。

Controllers文件夹:存放控制器。即凡MVC中之C

Filters文件夹:看名字即亮存放过滤器了。

Images文件夹:不用看了。就存图片。

Models文件夹:用于存放模型对象。

Scripts文件夹:用于存放JS文件。

Views文件夹:用于存放视图。

发生了点创建的列子。这对笔者相当好之一模一样件工作。光看上面的型组织笔者至少知道同样码事情。MVC中的V就当对应之Views文件夹里面,而C就在Controllers文件夹里面。这对咱们来提死重点。接下来就是若解M-V-C之间是啊样子工作。我们即便可以学及Asp.NET
MVC。Struts2当起步的时刻会错过加载对应之布置文件。当然对于Asp.NET
MVC来讲,也起照应之这项工作。只是加载的东西不同而为。如下。

Global.asax:

 public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
            AuthConfig.RegisterAuth();
        }
    }

点的代码是当Global.asax文件里的。那么笔者为什么而啊出来说话吧?这就是始于初始化Asp.NET
MVC的地方。上面的毕竟做了几乎件工作呢?

1.挂号WebApi。对于WebApi是什么。不亮大家产生没有出因此过RESTful
框架。可惜只有是询问而为。

2.挂号过滤器。对JAVA开发人员来讲,不知晓过滤器。那即便出少数了份了。

3.挂号路由器。这个好关键。Struts2是呀则通过请的URL来找到呼应的Action类。没有错。一定是透过struts.xml配置文件的action节点。路由器即使是一定于action节点的功能了。

4.注册Bundle信息。关于Bundle是什么笔者为坏说。只掌握他是用来UI界面引入CSS和JS。这个时刻可拿多个CSS和JS绑成一起。只要引一个Bundle的URL就是将此来CSS和JS一起引入。

5.挂号证件。关于此的语。请读者们自行查看。反正笔者没有用到了。所以未敢说。

由点我们明白相同宗工作——请求的URL是经过路由器来分析找到呼应之控制器。所以上Asp.NET
MVC就务须询问一下路由器是啊体统工作之。让咱们到App_Start文件夹里面去摸一个叫RouteConfig的类。如下

 1 public class RouteConfig
 2     {
 3         public static void RegisterRoutes(RouteCollection routes)
 4         {
 5             routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 6 
 7             routes.MapRoute(
 8                 name: "Default",
 9                 url: "{controller}/{action}/{id}",
10                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
11             );
12         }
13     }

上面就是部署路由器的地方。我们得以看到路由器事实是同一种植为安URL模板来拍卖相应之URL请求。上面是各级一个Asp.NET
MVC都见面提供的默认的URL模板。

name:当前路由器的称号。

url:URL模板。

defaults:URL请求的默认值。

此地跟Struts2底作法是匪一样子。Struts2每当处理URL请求是通对的package节点的名与action节点的讳来规定相应的action类,再通过action节点配置信息来施行相应的方式。而Asp.NET
MVC是通过路由器来分析,并查找有相应的控制器和控制器里面的办法。什么样子讲吧?让自家看一下上面url的值。

"{controller}/{action}/{id}"

地方就是URL模板。假设用户请求http://xxx.xx.com.cn/aomi/index/7。通过上面的模板对应一下。我们就可以知道controller值为aomi,action值为index,id值为7。这里id是一个可选的传值。什么说呢?看到id
= UrlParameter.Optional了啊?就是同我们讲id是可选的。所以严格来讲action节点的意义跟Asp.NET
MVC的控制器是对应之。都是用于控制工作终止以后要显得的视图。并区别是控制器是一个像样。让我们看一下控制器的代码吧。这规范可以增强了解。

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

namespace MvcExample.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your app description page.";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "Your contact page.";

            return View();
        }
    }
}

咱得了解HomeController类继承了Controller类。是不是说继承Controller类就好了。显然不是,笔者试着拿HomeController后面的Controller去丢,发现根本找不顶控制器。说明了Asp.NET
MVC还是发出一个约定——控制器要准XxxController来定名。难道就未可以被开发人员自己来定义名字吧?笔者没有说那个。只是来好几烦麻。他一旦为此到控制器工厂。即是IControllerFactory。所以笔者还是希望大家能本本分分一点吧。struts2于业务终止后。会回去一个字符串结果来确定要去呈显的视图。struts2之视图却产生几栽。同样子Asp.NET
MVC他吗出多少个返回结果。

EmptyResult:返回一个空的结果。即凡返回值为void。

ContentResult:返回一个文本内容之结果。

JsonResult:返回一个JSON格式的结果。

ViewResult:返回一个视图的结果。即凡是类似于HTML文件。

地方笔者并无尽列下。其他的话,笔者希望读者们融洽去查。好了。让咱们看一下端代码有中发生一个View()的方。这个返回的凡一个ViewResult型类。上面只是调用View()。这个时候他会为此智名来确定相应之视图。比如index方法让调用。那么View()就见面及Views文件夹下之Home文件夹去摸Index.cshtml。那么为什么是Home文件夹呢?默认就是如果XxxController的话,就是View/Xxx下面找对应之视图。那么对于cshtml文件是呀啊?你可以领略为和ftl文件是一个门类的。同时以Views文件玩夹下发生一个给Shared文件夹。如下。

图片 6

自然每一个控制器在Views文件夹都见面有一个相应的文件夹。文件夹名与控制器的讳一样子。那么来无出一头用的也罢?没有错。Shared文件夹就是用以所有控制器供用的。现在仅仅出一个题材了——使用任何的视图。看一下下的图。

图片 7

比方我们调用Index方法。按道理我们只要失去调动用Index.cshtml。那么要要是调用Aomi.cshtml什么办。如下就足以了。

 public class Home:Controller
    {
        public ActionResult Index()
        {
            return View("Aomi");
        }
    }

俺们都明白了控制器是何许错过追寻视图之后。我们如果失去询问一下View到Controller的传值和Controller到View的传值。

如出一辙、View到Controller的传值。一般有俩种。一栽是因此模子对象来传。一种是KEY-VALUE来传值。但是毫无疑问要是保证表单元素的Name要跟参数命名对应。即凡一模一样。

第二、Controller到View的传值。一般生三种。用ViewBag传值。用Model传值。即是范对象。还有用ViewData。

笔者增加了一个方式Aomi。然后参数为name。并透过动态类型ViewBag传至视图上。并出示出。

控制器:

 public class Home:Controller
    {
        public ActionResult Index()
        {
            return View("Aomi");
        }

        public ActionResult Aomi(string name)
        {
            ViewBag.Name = name;
            return View("Aomi");
        }
    }

视图:

@{
    ViewBag.Title = "Aomi";
}

<h2>@ViewBag.Name</h2>

推行结果:

图片 8

顾:name一定要是同参数的命名相同。不然传不了。

笔者简单的上书了瞬间关于传值的问题。现在咱们只要来拘禁一下视图上所用之知。Asp.NET
MVC的视图一般还是用razor引擎。所以上razor语法很重点。网络达到关于razor语法很多。笔者就非多说。笔者简单的讲一个例子。

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View("Aomi");
        }

        public ActionResult Aomi(string name)
        {
            ViewBag.Name = name;
            return View("Aomi");
        }
        public ActionResult Show()
        {
            ViewBag.DataList = new List<string>() { "a", "b", "c" };
            return View();
        }
    }

Show.cshtml:

@{
    ViewBag.Title = "Show";
}

@foreach (string val in ViewBag.DataList)
{
    <b>@val</b> 
}

履结果:

图片 9

实质上读书Asp.NET
MVC并无为难。只要掌握以几沾,笔者相信企业开发就没什么好题材。

1.打探一下路由器的用法。

2.View跟Controller之间是怎传值的。

3.Controller凡何等规定View的。

4.最终便是上razor语法。

本章总结

本章主要是询问一下Asp.NET
MVC。讲解路由器和视图与控制次传值。可以说这是着重。那么按照系列就是顶这里了。本系列的目地不是以教学。而是一个带。是笔者当年上C#时光的一个进程。最后谢谢大家。

相关文章