ASP.NETMVC音樂商店-2.控制器-創(chuàng)新互聯(lián)

在典型的 Web 應(yīng)用中,用戶請求的 URL 地址通常映射到保存在網(wǎng)站中的文件上,例如,當用戶請求 /Products.aspx 的時候,或者 /Products.php 的時候,很可能是在通過處理 Products.aspx 或者 Products.php 文件來完成任務(wù)。

為墨脫等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及墨脫網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、墨脫網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

ASP.NET MVC 的處理方式則不同,它沒有映射到文件上,相反,將這些 URL 地址映射到類的方法上,這些類被稱為“控制器”,控制器用來接受 HTTP 請求,處理用戶的輸入,獲取或者保存數(shù)據(jù),其中的處理方法稱為 Action,然后將回應(yīng)發(fā)送到客戶端,可能是顯示了一個 HTML 的網(wǎng)頁,下載一個文件,重定向到另外一個地址等等。

默認的路由配置

在新創(chuàng)建的項目中,打開 Global.asax.cs 文件,可以看到如下的代碼。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MvcMusicStore
{
// 注意: 有關(guān)啟用 IIS6 或 IIS7 經(jīng)典模式的說明,
// 請訪問http://go.microsoft.com/?LinkId=9394801

public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // 路由名稱
"{controller}/{action}/{id}", // 帶有參數(shù)的 URL
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數(shù)默認值
);


}

// 一般用來進行網(wǎng)站的初始化
protected void Application_Start()
{
System.Data.Entity.Database.SetInitializer(new MvcMusicStore.Models.SampleData());

AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}

其中 RegisterRoutes 方法注冊了默認的路由配置,在方法中的 routes.MapRoute 語句中,請求地址將會被看成三個部分組成,{controller}/{action}/{id},第一部分稱為控制器,如果沒有提供的話,默認為 Home, 第二部分稱為 Action 方法,如果沒有提供的話,默認為 Index, 第三部分稱為 id, 通常用來提供數(shù)據(jù)的標識,沒有默認值。這樣,當請求 / 地址的時候,系統(tǒng)將會把請求映射到名為 Home 的控制器進行處理,調(diào)用其中名為 Index 的方法處理請求。

增加 HomeController

我們的應(yīng)用商店從增加一個首頁的控制器開始,使用默認的命名約定,控制器的名稱應(yīng)該以 Controller 作為后綴,我們將這個控制器命名為 HomeController。

在 Controller 文件夾上右擊,然后選擇“添加”,“控制器(T)…”

在彈出的對話框中,輸入控制器的名字 HomeController,按下“添加”按鈕。

這樣,將會創(chuàng)建一個名為 HomeController.cs 的文件,其中的代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcMusinStore.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/

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

}
}

為了盡可能地簡單,我們讓 Index 方法簡單地返回一個字符串,這個字符串將作為回應(yīng)內(nèi)容直接返回瀏覽器,我們做下面的兩個簡單修改。

  •  將方法的返回類型修改為string
  •  將返回語句修改為 return "Hello form Home";

這樣,我們的方法將會變成如下的內(nèi)容

public string Index()
{
return "Hello form Home";
}

運行程序

現(xiàn)在,可以運行一下了,我們可以啟動服務(wù)器,使用下面的任何一種方法都可以。

  •  選擇“調(diào)試”,“啟動調(diào)試”菜單
  •  點擊工具欄上的綠色的箭頭按鈕
  •  使用鍵盤快捷方式,F(xiàn)5

使用上面的任何一種方法都會導(dǎo)致編譯項目,啟動 Visual Studio 中內(nèi)建的 ASP.NET 開發(fā)服務(wù)器.

在屏幕的右下角會彈出一個啟動 ASP.NET 開發(fā)服務(wù)器的提示,

Visual Studio 將自動打開一個瀏覽器窗口,其中的地址指向我們的 Web 服務(wù)器,這使得我們可以快速使用我們的程序。

Ok, 非常的簡單,我們已經(jīng)創(chuàng)建了一個 Web 站點,寫了一個三行的函數(shù),在瀏覽器中得到了這行文字, 不是很震撼,但這僅僅只是開始。

增加 StoreController

我們已經(jīng)為站點增加一個簡單的 HomeController 作為首頁,現(xiàn)在,增加另外一個控制器,可以用來瀏覽我們的音樂商店,我們的商店控制器將要支持三個場景:

  •  列出商店中的唱片的分類
  •  瀏覽商店中某個分類中的唱片列表
  •  顯示特定唱片的詳細信息

我們從增加一個新的 StoreController 開始,先停止剛才的程序,可以直接關(guān)閉瀏覽器,或者也可以在調(diào)試菜單中,選擇停止調(diào)試。

現(xiàn)在,增加一個新的 StoreController,像在 HomeController 中做的一樣,我們在 Controllers 文件夾上右健,選擇“添加”,“控制器”.

新的 StoreController 控制器中已經(jīng)包含了 Index 方法,我們使用這個方法來實現(xiàn)列出所有分類的列表,我們還會再增加兩個額外的方法來實現(xiàn)其他的場景:瀏覽和明細。

這些包含在控制器中的方法,我們稱為控制器中的 Action,像你在前面看到的,HomeController 中的 Index 方法就是一個 Action,這些 Action 的作用就是處理請求,然后返回對請求的處理結(jié)果。

對于我們的 StoreController ,首先讓 Index 這個 Action 返回一個“Hello” 串,然后,增加兩個方法:Browse() 和 Detials()

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcMusinStore.Controllers
{
public class StoreController : Controller
{
//
// GET: /Store/

public string Index()
{
return "Hello from Store.Index()";
}

public string Browse()
{
return "Hello from Store.Browse()";
}

public string Details()
{
return "Hello from Store.Details()";
}

}
}

重新運行程序,現(xiàn)在已經(jīng)可以訪問這些地址了。

  •  /Store
  •  /Store/Browse
  •  /Store/Details

太棒了,但是現(xiàn)在僅僅能夠返回一些常量的字符串,讓我們將它們變成動態(tài)的,我們從 URL 中獲取一些信息,然后把他們顯示在返回的頁面中。

首先,修改我們的 Browse 這個 Action,使得它可以從 URL 地址中獲取查詢信息,為方法增加一個名為“genre” 的字符串類型參數(shù),當我們這樣做的時候,ASP.NET MVC 就會自動把任何名為 genre 的請求參數(shù)的值賦予這個參數(shù)。

//
// GET: /Store/Browse?genre=?Disco
public string Browse(string genre)
{
string message = HttpUtility.HtmlEncode("Store.Browse, Genre =" + genre);
return message;
}

注意:

我們使用了HttpUtility.HtmlEncode 方法來處理用戶的輸入,這樣可以防止用戶的腳本注入攻擊。例如:/Store/Browse?Genre=<script>window.location=’http://hackersite.com’</script>.

現(xiàn)在,我們在瀏覽器中訪問一下:/Store/Browse?Genre=Disco

下一步,我們處理 Details 這個 Action,使它能夠處理名為 ID 的整數(shù)類型參數(shù)。這次,我們不再在請求參數(shù)中傳遞這個整數(shù),而是嵌在請求的 URL 地址中。例如:/Store/Details/5。

在 ASP.NET MVC 中,我們可以輕易地完成這個任務(wù)而不需要配置任何東西,ASP.NET MVC 默認的路由約定會將跟在 Action 方法之后的部分看作名為 ID 的參數(shù)的值,如果你的 Action 方法有一個名為 ID 的參數(shù),那么,ASP.NeT MVC 就會自動將這部分作為參數(shù)傳送給 Action 方法,需要注意的是,MVC 可以幫助你完成數(shù)據(jù)類型之間的轉(zhuǎn)換,所以,地址的第三部分一定要可以轉(zhuǎn)換為整數(shù)。

//
// GET: /Store/Details/5
public string Details(int id)
{
string message = "Store.Details, ID =" + id;
return message;
}

 再次運行程序訪問/Store/Details/5

總結(jié)一下我們完成的任務(wù):

  • 創(chuàng)建了一個 ASP.NET MVC 項目
  • 討論了基本的項目文件夾
  • 學習了如何運行開發(fā)服務(wù)器
  • 創(chuàng)建了兩個控制器 HomeController 和 StoreController
  • 為控制器增加了 Action 方法。

分享名稱:ASP.NETMVC音樂商店-2.控制器-創(chuàng)新互聯(lián)
文章分享:http://www.muchs.cn/article8/coieip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)云服務(wù)器、面包屑導(dǎo)航品牌網(wǎng)站制作、網(wǎng)站建設(shè)、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)