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、異步

相關文章
相關標籤/搜索