日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

第二篇:基于ASP.NET MVC2 創建第一個簡單頁面

系統 2337 0

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

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


第二篇:基于ASP.NET MVC2 創建第一個簡單頁面

?

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

實現控制器
????? Controllers 文件夾下新建一個文件,類型選擇“ MVC Controller Class ”,名字命名為 HomeController.cs 。這就是一個控制器類。然后我們為它編碼,具體代碼如下:
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 的核心類,因為它將處理一切請求,并處理所有頁面轉發等表示邏輯,這也是使用了 ASP.NET MVC 后與傳統 ASP.NET 應用最大的差別。在傳統模式下,一個用戶請求的 url 將對應一個 aspx 文件,而在 ASP.NET MVC 下,一個用戶請求對應某個控制器類中的一個方法,而這個方法,就叫做一個 Action 。至于如何對應的,則是通過對 url 的解析。
?????
例如,在傳統情況下, http://www.my400800.cn/index.aspx 表示請求網站根目錄下的 Default.aspx 文件。而現在, url 可能變成了這種樣子: http://blog.my400800.cn/北京400電話申請/1 。這個意思就是,請求名叫 HomeController 控制器類下的 Index 方法。一般地,默認情況下,請求 url 的格式為 http://localhost/{ControllerName}/{ActionName } 。其中 {ControllerName} 是控制器類名“ Controller ”前的部分, {ActionName} 就是方法名。
?????
當然,這種映射規則是可以更改的,而且請求 Action 時也可以傳遞參數,但這些都是后話,以后再慢慢討論。

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

實現視圖
????? 上文說到,當請求 http://localhost/Home/Index 時, HomeController Index 方法會被調用,而 Index 方法最后要呈現 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公告發布系統</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公告發布系統</h1>
        <ul>
            <% foreach (CategoryInfo c in categories)
               {
                    %>
            <li><%= Html.ActionLink(c.Name, "List/" + c.ID, "Announce") %></li>
            <% } %>
        </ul>
    </div>
</body>
</html>

  

?

?


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

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

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

第二篇:基于ASP.NET MVC2 創建第一個簡單頁面


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 古蔺县| 中西区| 贵南县| 抚松县| 通渭县| 民乐县| 丰台区| 芷江| 祥云县| 仪陇县| 宿松县| 宝应县| 九龙城区| 皋兰县| 昆明市| 平潭县| 定兴县| 华宁县| 肥乡县| 乐业县| 宁晋县| 嘉兴市| 易门县| 琼结县| 普兰店市| 西华县| 南雄市| 西昌市| 阳城县| 葫芦岛市| 宜黄县| 铜鼓县| 红河县| 嘉祥县| 丰镇市| 通州区| 通山县| 铅山县| 榕江县| 文登市| 阳原县|