亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

第二篇:基于ASP.NET MVC2 創(chuàng)建第一個簡單頁面

系統(tǒng) 2581 0

摘要
?????
本文首先一步一步完成 Demo 的第一個頁面 —— 首頁。然后根據(jù)實現(xiàn)過程,說明一下其中用到的與 ASP.NET MVC 相關(guān)的概念與原理。

讓第一個頁面跑起來
????? 現(xiàn)在,我們來實現(xiàn)公告系統(tǒng)中的第一個頁面 —— 首頁。它非常簡單,只包括所有公告分類的列表,并且每個列表項是一個超鏈接。其中分類數(shù)據(jù)是用我們的 Mock 組件得到的。實現(xiàn)后界面如下:


第二篇:基于ASP.NET MVC2 創(chuàng)建第一個簡單頁面

?

????? 在開始之前,我們要刪幾個東西。因為默認(rèn)情況下建立一個 MVC 項目時里面包含了幾個示例頁面,我們要做的就是:
????? 1.
Controllers 文件夾下所有文件刪除。
????? 2.
Views 文件夾下除了 Shared 文件夾和 Web.config 外的所有文件刪除,然后將 Shared 文件夾里面的文件刪除。
?????
完成以上幾步后,就可以開始實現(xiàn)第一個頁面了。

實現(xiàn)控制器
????? Controllers 文件夾下新建一個文件,類型選擇“ MVC Controller Class ”,名字命名為 HomeController.cs 。這就是一個控制器類。然后我們?yōu)樗幋a,具體代碼如下:
HomeController.cs:

?

C#代碼 復(fù)制代碼
  1. using ?System; ??
  2. using ?System.Collections.Generic; ??
  3. using ?System.Linq; ??
  4. using ?System.Web; ??
  5. using ?System.Web.Mvc; ??
  6. using ?System.Web.Mvc.Ajax; ??
  7. using ?MVCDemo.Models; ??
  8. using ?MVCDemo.Models.Interfaces; ??
  9. using ?MVCDemo.Models.Entities; ??
  10. ??
  11. namespace ?MVCDemo.Controllers ??
  12. { ??
  13. ???? public ? class ?HomeController?:?Controller ??
  14. ????{ ??
  15. ???????? public ?ActionResult?Index() ??
  16. ????????{ ??
  17. ????????????ICategoryService?cServ?=?ServiceBuilder.BuildCategoryService(); ??
  18. ????????????ViewData[ "Categories" ]?=?cServ.GetAll(); ??
  19. ???????????? return ?View( "Index" ); ??
  20. ????????} ??
  21. ????} ??
  22. }??
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using MVCDemo.Models;
using MVCDemo.Models.Interfaces;
using MVCDemo.Models.Entities;

namespace MVCDemo.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ICategoryService cServ = ServiceBuilder.BuildCategoryService();
            ViewData["Categories"] = cServ.GetAll();
            return View("Index");
        }
    }
}

  

?

?


?????
直觀看來,這個類不是很復(fù)雜。它首先繼承了 Controller 類。 Controller 類是 ASP.NET MVC 框架中提供的一個控制器積累,所有我們自定義的控制器類都要繼承此基類。然后這個類中有一個 Index 方法,返回值類型是 ActionResult
?????
這里對其中涉及到的概念簡單解釋一下。首先,控制器類可以說是 ASP.NET MVC 的核心類,因為它將處理一切請求,并處理所有頁面轉(zhuǎn)發(fā)等表示邏輯,這也是使用了 ASP.NET MVC 后與傳統(tǒng) ASP.NET 應(yīng)用最大的差別。在傳統(tǒng)模式下,一個用戶請求的 url 將對應(yīng)一個 aspx 文件,而在 ASP.NET MVC 下,一個用戶請求對應(yīng)某個控制器類中的一個方法,而這個方法,就叫做一個 Action 。至于如何對應(yīng)的,則是通過對 url 的解析。
?????
例如,在傳統(tǒng)情況下, http://www.my400800.cn/index.aspx 表示請求網(wǎng)站根目錄下的 Default.aspx 文件。而現(xiàn)在, url 可能變成了這種樣子: http://blog.my400800.cn/北京400電話申請/1 。這個意思就是,請求名叫 HomeController 控制器類下的 Index 方法。一般地,默認(rèn)情況下,請求 url 的格式為 http://localhost/{ControllerName}/{ActionName } 。其中 {ControllerName} 是控制器類名“ Controller ”前的部分, {ActionName} 就是方法名。
?????
當(dāng)然,這種映射規(guī)則是可以更改的,而且請求 Action 時也可以傳遞參數(shù),但這些都是后話,以后再慢慢討論。

?????
下面再深入 Index 方法,看看這個 Action 都做了什么。它首先調(diào)用了業(yè)務(wù)邏輯組件(當(dāng)然,是 Mock 的),然后將 GetAll 返回的公告分類數(shù)據(jù)賦予 ViewData["Category"] ,最后調(diào)用 View() 方法返回一個 ActionResult ViewData 是什么呢?你可以把他理解成一個關(guān)聯(lián)數(shù)組,它保存需要傳給視圖的數(shù)據(jù)。而 View Controller 類的一個方法,它返回一個 ActionResult 實例。這樣說可能有點抽象,其實直觀就是將某個視圖(一般就是一個 aspx 文件)呈現(xiàn)到瀏覽器中。那么如何知道呈現(xiàn)哪一個視圖呢?默認(rèn)情況下, View 方法會到網(wǎng)站的 Views 文件夾下的與控制器類同名的文件夾下尋找與 Action 方法同名的視圖。例如, HomeController Index 方法就會尋找 Views/Home/Index.aspx ,如果找不到,就會到 Shared 下尋找,再找不到就報錯了。當(dāng)然,你也可以給 View 方法傳遞一個字符串參數(shù),表示視圖名稱。

實現(xiàn)視圖
????? 上文說到,當(dāng)請求 http://localhost/Home/Index 時, HomeController Index 方法會被調(diào)用,而 Index 方法最后要呈現(xiàn) Views/Home/Index.aspx 視圖,所以,我們要在 Views 文件夾下建立一個 Home 文件夾,然后再新建一個 Index.aspx 視圖。如果您使用的是 VS2008 SP1 ,那么建立視圖非常方便,只要在 Home 文件夾下右鍵單擊,選 Add--->View ,然后指定視圖名就可以了。如果不是 SP1 的,就新建一個 Item ,類型選擇“ MVC View Page ”。建立好的視圖其實就是一個 aspx 頁面,但是其繼承了 View 。這也是一個基類,所有視圖需要繼承它。
?????
下面給出 Index.aspx 的代碼:
Index.aspx:

?

C#代碼 復(fù)制代碼
  1. <%@?Page?Language= "C#" ?AutoEventWireup= "true" ?CodeBehind= "Index.aspx.cs" ?Inherits= "MVCDemo.Views.Home.Index" ?%> ??
  2. <%@?Import?Namespace= "MVCDemo.Models.Entities" ?%> ??
  3. ??
  4. <!DOCTYPE?html?PUBLIC? "-//W3C//DTD?XHTML?1.0?Transitional//EN" ? "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > ??
  5. ??
  6. <html?xmlns= "http://www.w3.org/1999/xhtml" ?> ??
  7. <head?runat= "server" > ??
  8. ????<title></title> ??
  9. </head> ??
  10. <body> ??
  11. ????<%?List<CategoryInfo>?categories=ViewData[ "Categories" ]? as ?List<CategoryInfo>;?%> ??
  12. ????<div> ??
  13. ????????<h1><A?href= "http://www.my400800.cn" >400電話</A> ??
  14. MVC公告發(fā)布系統(tǒng)</h1> ??
  15. ????????<ul> ??
  16. ????????????<%? foreach ?(CategoryInfo?c? in ?categories) ??
  17. ???????????????{ ??
  18. ????????????????????%> ??
  19. ????????????<li><%=?Html.ActionLink(c.Name,? "List/" ?+?c.ID,? "Announce" )?%></li> ??
  20. ????????????<%?}?%> ??
  21. ????????</ul> ??
  22. ????</div> ??
  23. </body> ??
  24. </html>??
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="MVCDemo.Views.Home.Index" %>
<%@ Import Namespace="MVCDemo.Models.Entities" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
    <% List<CategoryInfo> categories=ViewData["Categories"] as List<CategoryInfo>; %>
    <div>
        <h1>
    
      
        400電話
      
    
    
MVC公告發(fā)布系統(tǒng)</h1>
        <ul>
            <% foreach (CategoryInfo c in categories)
               {
                    %>
            <li><%= Html.ActionLink(c.Name, "List/" + c.ID, "Announce") %></li>
            <% } %>
        </ul>
    </div>
</body>
</html>

  

?

?


?????
大約分析一下。剛才說過, Index 這個 Action 最后呈現(xiàn)這個 aspx 作為視圖,而且 ViewData 中包含了要給視圖傳遞的數(shù)據(jù)。在那里,我們將所有公告類別數(shù)據(jù)放在 ViewData["Categories"] 中。這里可以看到,我們將這些數(shù)據(jù)取出,并用來呈現(xiàn)頁面。至于那個 Html.Action ,這里先不細(xì)說。你只要知道,這個方法可以生成一個鏈接,其中第一個參數(shù)是鏈接文字,第二個是要鏈接到的 url Action 名,第三個是要鏈接到的 url 的控制器名。關(guān)于這些,我們以后細(xì)細(xì)討論。
?????
運行這個例子,并將請求 url 定位到 Home/Index ,就可以看到運行效果。
?????
你可能會發(fā)現(xiàn),不需要指定 Home/Index ,在輸入根目錄后就直接呈現(xiàn)了這個頁面。其實這是因為在默認(rèn)的路由配置里, Home Index 是默認(rèn)的控制器名和 Action 名。以后我們將會討論路由問題。

小結(jié)
????? 通過上面的過程,我們第一個 ASP.NET MVC 頁面已經(jīng)能呈現(xiàn)出來了。而且不單純只是一個頁面,其中還呈現(xiàn)了業(yè)務(wù)邏輯組件返回的數(shù)據(jù)。
?????
也許,您對其中許多地方還有困惑。不要著急,在下一篇中,我們做這個系統(tǒng)的步伐先

來自: http://ljl-xyf.iteye.com/blog/

第二篇:基于ASP.NET MVC2 創(chuàng)建第一個簡單頁面


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久草视频免费播放 | 日本精品二区 | 欧美人与鲁交大毛片免费 | 可以免费观看欧美一级毛片 | 亚洲小视频网站 | 欧美日韩亚洲国产无线码 | 国产三级黄色录像 | 九九成人| 色姑娘综合 | 老司机午夜永久在线观看 | 第一毛片| 可以免费观看的一级片 | 四虎影院官网 | 黄色片在线观看网址 | 香蕉网久久| 豆国产97在线 | 亚洲 | 波多野结衣久久 | 国产色在线 | www.香蕉网| 久久久精品国产 | 国产最新精品精品视频 | 动漫精品一区二区3d | 日本中文字幕不卡 | 日日夜夜天天人人 | 中文字幕在线观看免费视频 | 91网站国产 | 国产高清在线精品一区二区 | 深夜精品寂寞在线观看黄网站 | 久久奇米 | 青青久久久 | 日本精品欧洲www | 欧美国产亚洲精品a第一页 欧美国产亚洲精品高清不卡 | 日韩欧美一区在线观看 | 一区二区三区在线观看视频 | 国产在线视频资源 | 亚欧在线视频 | 日本黄色一级毛片 | www.四虎影 | 天天操天天干天天干 | 亚洲精品久久久久综合网 | 欧美激情综合 |