ASP.NET MVC4学习笔记

一、MVC简介

 

 

备注:

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

 

二、First Demo

 

 

 

 

 

 

三、Web开发方式对比

 

 

 

 

四、View详解

 

 

 

 

笔记:

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

 

五、Controller详解

 

 

 

 

笔记:

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

 

其他补充:

1.做列表页面:(这种方式自己试了好像不行)

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

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

然后遍历

@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对象属性。

}

 

 

六、路由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

 

你可能感兴趣的:(ASP.NET MVC4学习笔记)