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

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

系統(tǒng) 2152 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)建第一個簡單頁面

?

????? 在開始之前,我們要刪幾個東西。因為默認情況下建立一個 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#代碼 復制代碼
  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");
        }
    }
}

  

?

?


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

?????
下面再深入 Index 方法,看看這個 Action 都做了什么。它首先調(diào)用了業(yè)務邏輯組件(當然,是 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)哪一個視圖呢?默認情況下, View 方法會到網(wǎng)站的 Views 文件夾下的與控制器類同名的文件夾下尋找與 Action 方法同名的視圖。例如, HomeController Index 方法就會尋找 Views/Home/Index.aspx ,如果找不到,就會到 Shared 下尋找,再找不到就報錯了。當然,你也可以給 View 方法傳遞一個字符串參數(shù),表示視圖名稱。

實現(xiàn)視圖
????? 上文說到,當請求 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#代碼 復制代碼
  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 ,這里先不細說。你只要知道,這個方法可以生成一個鏈接,其中第一個參數(shù)是鏈接文字,第二個是要鏈接到的 url Action 名,第三個是要鏈接到的 url 的控制器名。關(guān)于這些,我們以后細細討論。
?????
運行這個例子,并將請求 url 定位到 Home/Index ,就可以看到運行效果。
?????
你可能會發(fā)現(xiàn),不需要指定 Home/Index ,在輸入根目錄后就直接呈現(xiàn)了這個頁面。其實這是因為在默認的路由配置里, Home Index 是默認的控制器名和 Action 名。以后我們將會討論路由問題。

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

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

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 最近中文字幕精彩视频 | 伊人伊狠亚洲综合影院 | 亚洲欧美日韩中文字幕在线一 | 80s成年女人毛片免费观看观看 | 日本高清毛片视频在线看 | 999精品免费视频 | 国产成年人网站 | 久久久久久九 | 奇米视频888 | 亚洲欧美人成人让影院 | 国产一区二区三区免费播放 | 美女视频很黄很黄又免费的 | 成人在线一区二区三区 | 久久不射影院 | 欧美性色黄大片一级毛片视频 | 亚洲国产精品综合欧美 | 国产69精品久久久久9999 | 天天爽影院一区二区在线影院 | 国产精品福利久久 | 欧美成人性做爰 | 久草视频免费 | 综合久久国产对白 | 日本一级爽毛片在线看 | 日本特级aⅴ一级毛片 | 免费一级特黄3大片视频 | 免费播放欧美毛片 | 奇米欧美成人综合影院 | 亚洲精品日韩中文字幕久久久 | 亚洲男人的天堂久久香蕉网 | 精品自拍视频在线观看 | 色妞色综合久久夜夜 | 国产福利一区二区在线观看 | 国产爱| 日本不卡中文字幕一区二区 | 亚洲欧美日韩在线不卡中文 | 成人免费毛片一区二区三区 | 高清国产一区二区 | 久久精品免观看国产成人 | 91视频免费入口 | 久久91精品国产91久久跳舞 | 亚洲精品911 |