国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【ASP.NET MVC】生成頁面(6)

這篇具有很好參考價值的文章主要介紹了【ASP.NET MVC】生成頁面(6)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本應該繼續(xù)數(shù)據(jù)庫訪問的問題進行探討,前文確實比較LOW。但本人認為:初學者需要解決的是快速了解知識路線的問題,所謂“生存問題”,所以,干脆把流程先走完。

一、頁面生成

下面這張圖在前面已經(jīng)介紹過:

【ASP.NET MVC】生成頁面(6),ASP.NET MVC,mvc

?前文其實已經(jīng) “初步” 解決了數(shù)據(jù)庫讀寫操作了(可理解為 C 到 M 的雙向通道已經(jīng)完成)!剩下的問題是:

1、頁面生成:控制器根據(jù)用戶訪問需求、數(shù)據(jù)庫內(nèi)容,動態(tài)生成頁面;(C?--->? V 的)

2、頁面的數(shù)據(jù)傳送到控制器? ?(V? ---- >? C)

頁面生成包括兩大部分:

1、數(shù)據(jù)傳遞,控制器數(shù)據(jù)怎么到頁面,同時,數(shù)據(jù)類型的生存期也應該注意

2、頁面元素的動態(tài)生成:框架一般都是固定的,但內(nèi)容應該是動態(tài)生成

控制器到頁面數(shù)據(jù)可以通過 ViewBag? ?ViewData 、TempData等”動態(tài)“容器來實現(xiàn):容器表明數(shù)據(jù)很多,動態(tài)意味著數(shù)據(jù)的類型并非固定的,而是動態(tài)的,依據(jù)約定進行 ”裝卸“ 即可。

在asp.net mvc程序設(shè)計中,傳遞數(shù)據(jù)常常會用到viewdata、viewbag、tempdata,這3個對象都可以用來傳遞數(shù)據(jù),但他們在細節(jié)中有很多的不同之處。
ViewData:ViewData是一個字典集合,通過key值讀取對應的value使用方法:ViewData["myname"]="張三"
ViewBag:ViewBag是動態(tài)類型,作用和ViewData一樣,都是用來存儲信息,有一些不同的是ViewData是object類型,ViewBag是動態(tài)類型,從運行效率上來講,ViewBag高于ViewData。在實際開發(fā)中,通不只用其中一種。使用方法:ViewBag.data="張三"
TempData:跨請求數(shù)據(jù)傳遞,它的機制類似于Session對象,不同的頁面之間可以傳遞參數(shù),但TempData只保存上一次的數(shù)據(jù),當頁面再次刷新,數(shù)據(jù)消失。使用方法:TempData["myname"]="張三"

以上摘抄自網(wǎng)絡(luò)。因為不重要,直接用 ViewBag 來的簡單!

使用范例:續(xù)上文例 Index Action中添加:

【ASP.NET MVC】生成頁面(6),ASP.NET MVC,mvc

?頁面也進行修改:

【ASP.NET MVC】生成頁面(6),ASP.NET MVC,mvc

?運行結(jié)果:

【ASP.NET MVC】生成頁面(6),ASP.NET MVC,mvc

?代碼就不貼了,就幾行,很簡單就完成數(shù)據(jù)傳遞:ViewBag 里塞進去,在 CSHTML文件里用Razor 的語法來完成動態(tài)生成頁面。

?二、改進代碼

為了簡單,先在控制器下添加一個類,該類就是對表user的描述,以下是HomeController.cs的代碼:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TestWeb.Models;

namespace TestWeb.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
           DataSet set= TestMysql.Query("select * from user");
           List<TestUser> list = new List<TestUser>();
           foreach (DataRow row in set.Tables[0].Rows)
           {
               TestUser tmp = new TestUser(row["name"].ToString(), 
                   row["psw"].ToString(), 
                   int.Parse(row["age"].ToString()));
               list.Add(tmp);
           }
           ViewBag.stu_list = list;
            return View();
        }

    }
    public class TestUser
    {
        public string name;  //公用才能在頁面上調(diào)用,面向?qū)ο蠓庋b思想
        public string psw;
        public int age;
        public TestUser(string _name, string _psw, int _age)
        {
            name = _name;
            psw = _psw;
            age = _age;
        }
    }
}

視圖類進行修改:Index.cshtml

@{
    List<TestWeb.Controllers.TestUser> list = ViewBag.stu_list;
}
<table>
    <thead>   //表頭
       <tr>
        <th>姓名</th>
        <th>密碼</th>
        <th>年齡</th>
       </tr>
    </thead>
    @foreach (TestWeb.Controllers.TestUser item in list)  //C#遍歷集合
    { 
        <tr>
            <td>@item.name</td>
            <td>@item.psw</td>
            <td>@item.age</td>
        </tr>
    }
   
</table>

先看結(jié)果:

【ASP.NET MVC】生成頁面(6),ASP.NET MVC,mvc

?這里不僅僅是由簡單數(shù)據(jù)到對象,到對象集合的傳遞問題,還涉及到兩個重要問題:頁面動態(tài)生成,以及數(shù)據(jù)類型的作用范圍

重要結(jié)論:頁面是在控制器,或者說是服務(wù)端生成的,也就是所謂的 ViewBag 的數(shù)據(jù)并非已傳送到客戶端 瀏覽器 !從ViewBag里 ”拆“ 出來的數(shù)據(jù),仍然在服務(wù)器上使用?!梢院唵蔚乩斫鉃槭褂?@ 拆出來的數(shù)據(jù)還是在服務(wù)器上使用,作用是用來 ”輔助“ 服務(wù)器生成所需要的 頁面。頁面都是html + css + js 等,動態(tài)嵌入數(shù)據(jù)和元素很麻煩,那么用 Razor 語法來實現(xiàn)吧!

頁面是控制器用 Razor 動態(tài)生成,數(shù)據(jù)類型作用范圍僅限于服務(wù)端,客戶端僅僅能夠執(zhí)行的代碼是JS(肯定不是C#)。

問題:

數(shù)據(jù)是否需要到客戶端去通過JS使用呢?——當然要,比如echarts 畫圖,就要用到數(shù)據(jù)!這個問題在后面再探討。

PS:

1、echarts 畫圖 能不能 在服務(wù)端完成?當然不行,那是一個JS ,在瀏覽器上運行的!

2、js能不能使用? List、類等數(shù)據(jù)類型?當然不行,難道瀏覽器上裝一個C#的代碼編譯器?文章來源地址http://www.zghlxwxcb.cn/news/detail-623406.html

到了這里,關(guān)于【ASP.NET MVC】生成頁面(6)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • ASP.NET Core 中的 MVC架構(gòu)

    ASP.NET Core 中的 MVC架構(gòu)

    MVC架構(gòu)把 App 按照邏輯分成三層: Controllers,接收 http request,配合 model,通過http response 返回 view,盡量不做別的事 Models, 負責業(yè)務(wù)邏輯,App 的狀態(tài),以及數(shù)據(jù)處理 Views,呈現(xiàn) UI,如果UI 較復雜,應該使用View 組件, ViewModel, 或者 view 模板 Controller ASP.NET Core MVC 中的所有 Control

    2024年02月09日
    瀏覽(19)
  • DevExpress DXperience Crack Blazor, ASP.NET, ASP.NET MVC

    DevExpress DXperience Crack Blazor, ASP.NET, ASP.NET MVC

    DevExpress DXperience helps you build applications for Windows, Web, mobile and tablet with all of the DevExpress single platform controls and more. The DevExpress DXperience Subscription includes hundreds of Desktop UI Controls (WinForms, WPF and Desktop Reporting), Web UI Controls (Blazor, ASP.NET, ASP.NET MVC and Core, Bootstrap Web Forms, JavaScript - jQ

    2024年04月11日
    瀏覽(24)
  • asp.net MVC markdown編輯器

    在 ASP.NET MVC 中,你可以使用一些第三方 Markdown 編輯器來讓用戶在網(wǎng)頁上方便地編輯和預覽 Markdown 內(nèi)容。這些編輯器通常提供實時預覽功能,將 Markdown 文本轉(zhuǎn)換為實時渲染的 HTML,并支持編輯器工具欄來輔助用戶編輯。 以下是一些流行的 ASP.NET MVC Markdown 編輯器: Editor.md :

    2024年02月15日
    瀏覽(27)
  • 【ASP.NET MVC】使用動軟(四)(12)

    【ASP.NET MVC】使用動軟(四)(12)

    需解決的問題: 網(wǎng)站登錄往往需要用戶名+密碼驗證,為避免重復驗證,一般采用Cookie 、Session等技術(shù)來保持用戶的登錄狀態(tài): Session是在服務(wù)端保存的一個數(shù)據(jù)結(jié)構(gòu),用來跟蹤用戶的狀態(tài),這個數(shù)據(jù)可以保存在集群、數(shù)據(jù)庫、文件中; Cookie是客戶端保存用戶信息的一種機制,

    2024年02月14日
    瀏覽(24)
  • ASP.NET Core MVC -- 控制器

    ASP.NET Core MVC -- 控制器

    默認控制器訪問index 特定訪問路徑 ? 特定路徑訪問,帶參數(shù)

    2024年02月12日
    瀏覽(28)
  • 【ASP.NET MVC】使用動軟(五)(13)

    【ASP.NET MVC】使用動軟(五)(13)

    前文完成的用戶登錄后的首頁如下:? ? ?后續(xù)賬單管理、人員管理等功能頁面都有 相同的頭部,左邊和下邊, 唯一不同的右邊內(nèi)容部分,所以要解決重復設(shè)計的問題。 在Views上右鍵添加新建項,選擇布局頁,名稱可改: 拷貝相同的頭部、左邊、下邊的HTML到布局頁,需要加

    2024年02月14日
    瀏覽(31)
  • 【ASP.NET MVC】使用動軟(三)(11)

    【ASP.NET MVC】使用動軟(三)(11)

    上文中提到,動軟提供了數(shù)據(jù)庫的基本操作功能,但是往往需要添加新的功能來解決實際問題,比如GetModel,通過id去查對象: ?這個功能就需要進行改進:往往程序中獲取的是實體的其他屬性,比如用戶登錄的時提供賬號名和密碼,需要根據(jù)賬戶名(唯一)去獲取數(shù)據(jù)庫中的

    2024年02月14日
    瀏覽(16)
  • 【ASP.NET MVC】使用動軟(二)(10)

    【ASP.NET MVC】使用動軟(二)(10)

    按前文添加動態(tài)到工程 雙擊動軟 完成新建數(shù)據(jù)庫服務(wù)器后 ,需要關(guān)閉重新打開 選擇簡單三層,注意保存位置 注意切換數(shù)據(jù)庫: 生成后拷貝五個文件夾到工程目錄 注意目錄結(jié)構(gòu): 添加四個項目到原來的工程: 右鍵項目-》添加-》現(xiàn)有的項目,一個個添加到工程: 添加引用

    2024年02月14日
    瀏覽(21)
  • 【ASP.NET MVC】數(shù)據(jù)庫訪問(5)

    【ASP.NET MVC】數(shù)據(jù)庫訪問(5)

    對象關(guān)系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù) 。? 以上是官話,個人理解: 1、解決問題:數(shù)據(jù)庫的訪問 2、如何解決:數(shù)據(jù)庫由表、記錄?組成? ? ? -》? ? 把表映射成面向?qū)ο蟮念? ?,記錄則是對

    2024年02月14日
    瀏覽(23)
  • 【ASP.NET MVC】使用動軟(一)(9)

    【ASP.NET MVC】使用動軟(一)(9)

    前文為解決數(shù)據(jù)庫操作設(shè)計的? TestMysql? 類,僅簡單地封裝了一個Query函數(shù),代碼如下: 很顯然,一個函數(shù)去解決所有數(shù)據(jù)庫中所有表的描述、操作,肯定是遠遠不夠,即使完成系統(tǒng)功能也會使代碼非常復雜。因此需要封裝更多的功能。 ORM 是 Object Relational Mapping 的縮寫。意

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包