成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

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

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

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

默認(rèn)的路由配置

在新創(chuàng)建的項(xiàng)目中,打開(kāi) 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)典模式的說(shuō)明,
// 請(qǐng)?jiān)L問(wèn)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ù)默認(rèn)值
);


}

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

AreaRegistration.RegisterAllAreas();

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

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

增加 HomeController

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

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

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

這樣,將會(huì)創(chuàng)建一個(gè)名為 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();
}

}
}

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

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

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

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

運(yùn)行程序

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

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

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

在屏幕的右下角會(huì)彈出一個(gè)啟動(dòng) ASP.NET 開(kāi)發(fā)服務(wù)器的提示,

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

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

增加 StoreController

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

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

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

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

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

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

對(duì)于我們的 StoreController ,首先讓 Index 這個(gè) Action 返回一個(gè)“Hello” 串,然后,增加兩個(gè)方法: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()";
}

}
}

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

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

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

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

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

注意:

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

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

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

在 ASP.NET MVC 中,我們可以輕易地完成這個(gè)任務(wù)而不需要配置任何東西,ASP.NET MVC 默認(rèn)的路由約定會(huì)將跟在 Action 方法之后的部分看作名為 ID 的參數(shù)的值,如果你的 Action 方法有一個(gè)名為 ID 的參數(shù),那么,ASP.NeT MVC 就會(huì)自動(dòng)將這部分作為參數(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;
}

 再次運(yùn)行程序訪問(wèn)/Store/Details/5

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

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

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

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

廣告

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

營(yíng)銷型網(wǎng)站建設(shè)
定安县| 成武县| 封开县| 浑源县| 宜城市| 宁德市| 石泉县| 台湾省| 泾川县| 万山特区| 阿尔山市| 嘉定区| 黎城县| 阿拉善右旗| 松桃| 海林市| 福贡县| 桃源县| 普兰店市| 陆川县| 安国市| 桐庐县| 凤阳县| 鄂托克前旗| 抚宁县| 河间市| 阿克苏市| 永仁县| 汉阴县| 鄯善县| 玛多县| 肃宁县| 铜陵市| 铁岭县| 法库县| 乌拉特中旗| 义乌市| 图们市| 新安县| 嘉善县| 余庆县|