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

第二篇:基于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條評論
主站蜘蛛池模板: 久久美女精品 | 免费一级黄色片 | 国产一二三区精品 | 奇米第四色777 | 亚欧精品一区二区三区四区 | 亚洲精品在线看 | 成年女人免费看一级人体片 | 中文字幕在线欧美 | 欧美日韩中文一区二区三区 | 国产国语videosex另类 | 国产 日韩 欧美 亚洲 | 五月婷婷啪 | 亚洲高清在线观看播放 | 欧美一级毛片日本 | 天天躁日日躁成人字幕aⅴ 天天躁日日躁狠狠躁黑人躁 | 久久精品久噜噜噜久久 | 亚洲一级免费视频 | 中文字幕在线一区二区三区 | 性做久久久久久免费观看 | 337p粉嫩大胆色噜噜噜 | 91视频原创 | 欧美日本俄罗斯一级毛片 | 国产h版大片在线播放 | 香蕉久久综合 | 天天槽天天槽天天槽 | 亚洲www色 | 天天爱天天做天天爽天天躁 | 五月婷婷激情四射 | 黄色录像欧美 | 国产一及毛片 | 一级黄色α片 | 亚洲精品日韩中文字幕久久久 | 午夜影网 | 日韩精品福利视频一区二区三区 | 日韩精品亚洲人成在线播放 | 日本一区二区三区四区公司 | 99久久精品国产一区二区 | 天天综合在线视频 | 日本1区二区三区公司 | 精品视频免费播放 | 亚洲女人国产香蕉久久精品 |