ASPNET-MVC-學習筆記

ASP.NET MVC

MVC(Model View Controller 模型-視圖-控制器)

  • Model(模型)表示應用程序核心(比如數據庫記錄列表)。
  • View(視圖)顯示數據(數據庫記錄)。
  • Controller(控制器)處理輸入(寫入數據庫記錄)。
  • MVC環境設置

一、MVC 文件夾

一個典型的 ASP.NET MVC Web 應用程序的文件夾內容如下所示:

1.應用程序信息

  • Properties
  • References

2.應用程序文件夾

  • App_Data:存儲應用程序數據(添加SQL 數據庫)
  • Content:存放靜態文件,比如樣式表(CSS文件)、圖標和圖像。
    • themes - 存放jQuery 樣式和圖片
    • Site.css - 標準的樣式表文件(CSS文件)
  • Controllers:處理用戶輸入和相應的控制器類
  • Models:模型控制並操作應用程序的數據
  • Views:存儲與應用程序的顯示相關的HTML 文件(用戶界面)
    • Shared 文件夾 - _ViewStart自動添加到由應用程序顯示的所有視圖。
    • @{Layout = "~/Views/Shared/_Layout.cshtml";}
  • Scripts:存儲應用程序的JavaScript

3.配置文件

  • Global.asax
  • packages.config
  • Web.config

二、添加添加樣式和佈局

  • _Layout.cshtml:表示應用程序中每個頁面的佈局。位於Views 文件夾中的Shared 文件夾。

HTML 幫助器

  • @Url.Content():URL 內容將在此處插入。

  • @Html.ActionLink():HTML 鏈接將在此處插入。

Razor 語法

  • @ViewBag.Title:頁面標題將在此處插入。

  • @RenderBody():頁面內容將在此處呈現。

範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>  
<html>
<head>
<meta charset="utf-8" />
<title> @ViewBag.Title </title>
<link href=" @Url.Content("~/Content/Site.css") " rel="stylesheet" type="text/css" />
<script src=" @Url.Content("~/Scripts/jquery-1.5.1.min.js") "></script>
<script src=" @Url.Content("~/Scripts/modernizr-1.7.min.js") "></script>
</head>
<body>
<ul id="menu">
<li> @Html.ActionLink("Home", "Index", "Home") </li>
<li> @Html.ActionLink("Movies", "Index", "Movies") </li>
<li> @Html.ActionLink("About", "About", "Home") </li>
</ul>
<section id="main">
@RenderBody()
<p>Copyright W3CSchool 2012. All Rights Reserved.</p>
</section>
</body>
</html>

三、Controllers 文件夾

  • Controllers文件夾包含負責處理用戶輸入和響應的控制類。

  • MVC 要求所有控制器文件的名稱以”Controller” 結尾。

Home 控制器

在我們應用程序中的控制器文件HomeController.cs ,定義了兩個控件IndexAbout

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using System;  
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcDemo.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{return View();}

public ActionResult About()
{return View();}
}
}

Controller 視圖

  • Views文件夾中的文件Index.cshtmlAbout.cshtml定義了控制器中的ActionResult視圖Index()和About()。

四、Views 文件夾

  • Views文件夾存儲的是與應用程序顯示(用戶界面)相關的文件(HTML文件)。 根據所採用的語言內容,這些文件可能擴展名可能是html、asp、aspx、cshtml 和vbhtml。
類型 副檔名
HTML .htm or .html
ASP .asp
ASP.NET .aspx
ASP.NET Razor C# .cshtml
ASP.NET Razor VB .vbhtml

Index 文件

  • Index.cshtml 表示應用程序的Home 頁面。 它是應用程序的默認文件(首頁文件)。
1
2
3
4
5
@{ViewBag.Title = "Home Page";}  

<h1>Welcome to W3CSchool.cc</h1>

<p>Put Home Page content here</p>

五、Models 文件夾

  • AccountModels包含LogOnModelChangePasswordModelRegisterModel

添加數據庫視圖

在Movies 文件夾中,會自動創建以下文件:

  • Create.cshtml
  • Delete.cshtml
  • Details.cshtml
  • Edit.cshtml
  • Index.cshtml

六、MVC 應用程序安全

Models文件夾包含表示應用程序模型的類。

  • Visual Web Developer自動創建AccountModels.cs文件,該文件包含用於應用程序認證的模型。

  • AccountModels包含LogOnModelChangePasswordModelRegisterModel


七、MVC HTML 幫助器

通過MVC,Html.ActionLink() 不連接到視圖。 它創建一個連接到控制器操作。

Razor 語法:
@Html.ActionLink("About this Website", "About")

ASP 語法:
<%=Html.ActionLink("About this Website", "About")%>
第一個參數是鏈接文本,第二個參數是控制器操作的名稱。

上面的Html.ActionLink() 幫助器,輸出以下的HTML:
<a href="/Home/About">About this Website</a>

範例

ASP .NET 語法C#:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()){%>
<p>
<label for="FirstName">First Name:</label>
<%= Html.TextBox("FirstName") %>
<%= Html.ValidationMessage("FirstName", "*") %>
</p>
<p>
<label for="LastName">Last Name:</label>
<%= Html.TextBox("LastName") %>
<%= Html.ValidationMessage("LastName", "*") %>
</p>
<p>
<label for="Password">Password:</label>
<%= Html.Password("Password") %>
<%= Html.ValidationMessage("Password", "*") %>
</p>
<p>
<label for="Password">Confirm Password:</label>
<%= Html.Password("ConfirmPassword") %>
<%= Html.ValidationMessage("ConfirmPassword", "*") %>
</p>
<p>
<label for="Profile">Profile:</label>
<%= Html.TextArea("Profile", new {cols=60, rows=10})%>
</p>
<p>
<%= Html.CheckBox("ReceiveNewsletter") %>
<label for="ReceiveNewsletter" style="display:inline">Receive Newsletter?</label>
</p>
<p>
<input type="submit" value="Register" />
</p>
<%}%>