ASP.NET MVC4学习笔记

2019年12月06日 阅读数:177
这篇文章主要向大家介绍ASP.NET MVC4学习笔记,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

1、MVC简介

 

 

备注:javascript

过去MVC模式并不适合小型甚至中等规模的应用程序,这样会带来额外的工做量,增长应用的复杂性。但如今多数软件设计框架,能直接快速提供MVC骨架,供中小型应用程序开发,此问题再也不存在。对于开发存在大量用户界面,而且逻辑复杂的大型应用程序,MVC将会使软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建MVC模式框架时会花费必定的工做量,但从长远的角度来看,它会大大提升后期软件开发的效率。

php

 

2、First Demo

 

 

 

 

 

 

3、Web开发方式对比

 

 

 

 

4、View详解

 

 

 

 

笔记:css

-》Razor的使用:C#代码与html混编
-》HtmlHelper:快速完成表单布局
-》行为向视图传递数据:ViewData["键"],能够简写为ViewBag.键
-》强类型页面
    为何要使用强类型页面:实现了编译时错误检查,防止对于对象的属性的编写错误
    怎么用:@model 类型,写在页面的最上面
    访问:ViewData.Model(可简写为Model),Html.***For(c=>c.***)
-》难点:扩展方法,lambda表达式html

 

5、Controller详解

 

 

 

 

笔记:vue

-》行为的本质就是方法
-》返回类型:ActionResult
-》行为的重载必须同时符合两点:1.参数不一样;2.请求方式不一样  (为啥参数不能区分呢 由于参数能够自动装配 没法仅仅经过参数来区分)
-》数据的传递与接收:
    传递:支持get、post方式传递
    接收:Request["键"],自动装配(post的name和行为参名同样才能实现)java

 

其余补充:jquery

1.作列表页面:(这种方式本身试了好像不行)ios

controller里面行为返回ViewBag.Model = List<Person> list;c++

view页面强类型设置为@using model List<**.Person>git

而后遍历

@foreach(var item in Model)

{

   遍历输出...

   item.xxx;

}

 

本身尝试这个写法能够:

控制器:

public ActionResult CoachList()
{
    List<UserDTO> coachList = _userBLL.GetCoachList();
    return View(coachList);
}

页面:

头部:

@model List<XX.DTO.UserDTO>

内容:

@foreach (var item in Model)
{
    <a>@item.NickName</a>
}

 

 

 其余方式:

控制器中:

public ActionResult CoachList()
{
    List<UserDTO> coachList = _userBLL.GetCoachList();
    CoachListViewModel viewModel = new CoachListViewModel();  //CoachListViewModel为自定义视图实体类型
    viewModel.CoachList = coachList;
    return View(viewModel);
}

自定义视图实体类型CoachListViewModel

namespace Web.Models.ViewModel
{
    public class CoachListViewModel
    {
        public List<UserDTO> CoachList { get; set; }
    }
}

页面中:

顶部:@model Web.Models.ViewModel.CoachListViewModel

内容:

@foreach (var item in Model.CoachList)
{
    <a>@item.NickName</a>
}

 

2.controller中行为的自定义类型参数自动装配:(view中页面强类型请求过来)

public ActionResult Add(Person person)

{

      装配过程:

      1.先建立并初始化一个Person对象 

      2.而后把post过来的值,经过name做为键去找值,若是有的话自动装配赋值给Person对象属性。

}

 

 

6、路由Route

备注:

若是使用的是RouteDebugger,则不须要在Global中注册,而是经过web.config中为appsettings添加子节点<add key="RouteDebugger:Enabled" value="true"/>

备注:

 #region 路由规则示例
            //新闻显示页
            routes.MapRoute(
                name: "NewsShow",
                url: "News/{year}-{month}-{day}-{id}",
                defaults: new { controller = "NewsHome", action = "Show" },
                constraints: new { year = @"^\d{4}$", month = @"^\d{1,2}$", day = @"^\d{1,2}$" }
                );
            //新闻列表页
            routes.MapRoute(
                name: "NewsList",
                url: "News/{type}-{pageindex}-{pagesize}",
                defaults: new { controller = "NewsHome", action = "List" }
                );
            //新闻首页
            routes.MapRoute(
                name: "NewsIndex",
                url: "News/{*values}",
                defaults: new { controller = "NewsHome", action = "Index" }
                );
            //网站首页
            routes.MapRoute(
                name: "Index",
                url: "{*values}",
                defaults: new { controller = "Home", action = "Index" }
                );
            #endregion

 

笔记:

-》4个类型:Route,RouteData,RouteCollection,RouteTable
-》参数传递与接收
-》自定义路由规则与调试

 

7、异步