• Asp.net MVC4 Step by Step (1)-路由,控制器,视图


    注意:此文需要你有一定Asp.net MVC的基础,很多东西省略了,只是做个提要笔记形式。

    要创建一个ASP.NET MVC的Web应用,首先要去下载ASP.NET MVC框架, 可以访问ASP.NET 官方网站,http://www.asp.net/mvc下载一个web平台安装器,

    环境:

    • VS2010,
    • MySQL 5.6
    • Entity Framework 5
    • .NET 4.0

    创建一个新的项目

    image

    选择Razor视图引擎,这是一个新的页面标签语法,后面会介绍

    image

    创建完成,项目结构式如下所示

    image

    这里面,要首先要了解的是“路由”, “控制器”, “视图”, “ 模型”, 视图和控制器是属于UI层, 因为, 控制器只应该包含UI逻辑,而不包含业务逻辑, 数据和业务逻辑放在模型里面。 这个是和以前的WebForm开发有关系而又不同的地方。


    路由--负责确定由哪个控制器操作来处理待定的URL请求

    它有三个元素

    Unique name, 路由的唯一名字。

    URL pattern, 将URL解析成有意义词语的简单模式语法。

    Defaults, URL模式里定义的参数变量的默认值。

    Constraints, 为URL匹配模式定义更严格的约规则

    打开App_Start文件夹下的RouteConfig.cs文件可以看到以下内容

    image

    这是默认MVC项目添加的一个通用路由,UrlParameter.Optional的意思是可选的,如果有参数就取参数值,如果没有也可以。


    控制器--就是包含被路由请求时调用方法的类

      public class HomeController : Controller
        {
            public ActionResult Index()
            {
                ViewBag.Message = "修改此模板以快速启动你的 ASP.NET MVC 应用程序。";
     
                return View();
            }
     
            public ActionResult About()
            {
                ViewBag.Message = "你的应用程序说明页。";
     
                return View();
            }
     
            public ActionResult Contact()
            {
                ViewBag.Message = "你的联系方式页。";
     
                return View();
            }
        }
    }

     

    这个HomeController控制器类包含了三个操作Index, About, Contact, 当使用刚才的默认路由时,当请求/Home/About, 框架就会寻找HomeController这个类中的About方法来处理请求。

     

    尽管每个控制器都要返回ActionResult, 但是大部分时间不需手动完成, 这个没明白什么意思。

    System.Web.Mvc.Controller基类提供的帮助方法说明如下

    • Content()返回文本类型的ContentResult, 比如“Hello, World!”。
    • File()返回文件类型的内容FileResult, 比如PDF。
    • HttpNotFound() 返回包含404HTTP状态吗的HttpNotFoundResult。
    • JavaScript() 返回包含Javascript内容的JavaScriptResult, 比如“function hello(){alert(Hello, World!);}”。
    • Json () 返回JSON格式数据的JsonResult, 比如“{“Message”:Hello, World!}”。
    • PartialView() 返回包含部分视图内容的PartialViewResult。
    • Redirect()返回一个包含302跳转状态值RedirectResult, 跳转到给定的URL上。 例如, “302 http://…..”,
    • RedirectToAction()和RedirectToRoute()  与Redirect()类似,只有框架可以动态查询路由引擎来确定外部的URL.
    • View() 返回渲染视图的ViewResult。

    视图--这个比较讨厌,视图就是返回给用户的页面

    ASP.NET MVC 将会使用控制器提供的名字。去Views目录下面去找, 举例来说, HomeController的Index()操作方法如下:

            public ActionResult Index()
            {
                ViewBag.Message = "修改此模板以快速启动你的 ASP.NET MVC 应用程序。";
            
                return View(); //这里无参调用View ,就会去找一个和操作方法同名的视图,先在Views下的Home目录找,找不到再到Shared目录下找。
            }
     

    使用Razor语法的视图,要区分代码段@{},和代码块@XXX,区别是代码段是简单表达式,返回标记代码给视图渲染。

    可以在控制器方法里面,使用ViewBag 或ViewData 从控制器向视图传递数据

    除了基本的字典行为, ViewData对象也提供了Model属性,这是请求的原始模型对象

            public ActionResult About()
            {
                ViewBag.Message = "你的应用程序说明页。";
                //ViewBag.CompanyName = "Ebuy: The ASP.NET MVC Demo Site";
                //ViewBag.CompanyDescription = "Ebuy is the world leader in ASP.NET MVC demoing!";
     
                var company = new CompanyInfo
                    {
                        Name = "Ebuy: The ASP.NET MVC Demo Site",
                        Description = "Ebuy is the world leader in ASP.NET MVC demoing!",
                    };
     
                return View("About" , company);
            }

    这里View方法的第二个参数company就是要赋值给ViewData.Model属性的对象, 在About.cshtml中,Razor语法直接使用@model声明,指定company就是Model类型。

    HTML和URL帮助方法,这个不多说了,看到查帮助吧

  • 相关阅读:
    MVC框架理解及优缺点
    ThinkPHP 小于5.0.24 远程代码执行高危漏洞 修复方案
    Nginx负载均衡配置与负载策略
    【高级】PHPFPM和Nginx的通信机制
    浅谈Facebook的服务器架构(组图) 狼人:
    【观点】什么是REST? 狼人:
    10款对开发者有用的Android应用 狼人:
    【书摘】Linux内核编程 狼人:
    6款强大的jQuery插件 创建和加强网站布局 狼人:
    【评论】是什么造就了伟大的程序员? 狼人:
  • 原文地址:https://www.cnblogs.com/grkin/p/3296241.html
Copyright © 2020-2023  润新知