主頁 > .NET開發 > 對于jsp技術,aspx技術的困惑

對于jsp技術,aspx技術的困惑

2020-10-03 00:12:43 .NET開發

最近接觸了一個c#的專案,基本上是MVC結構,是基于asp.net的web專案。view層是多個cshtml檔案構成(基本可以認為是以前的aspx檔案),controller層由多個cs檔案(c#代碼)組成,資料層這里暫不討論。

這個專案是這樣的,我大概看了一下,view層的cshtml檔案里面比如某個按鈕會鏈接到js檔案中的某個函式,然后這個函式會提交post請求或者get請求,然后就會鏈接到controller層的cs檔案中的那個對應的函式了,之后就是資料處理然后回傳。

現在有以下幾個困惑:

1,我不知道上面講的這個流程是不是現在web開發中主流的一個前后端互動程序?

2,基于java web的jsp技術是不是也是類似于上面.net這么一個流程?jsp檔案是不是就是對應于.net中的cshtml檔案?不過網上說,jsp檔案會包含java代碼,但我在cshtml檔案中完全沒找到c#的代碼,要么就是html,要么就是js

3,如果jsp檔案中會夾雜著大量的java代碼,那這個view層和controller層豈不是粘在一塊了?難道不應該是jsp檔案呼叫js,然后js呼叫服務器端controller層中的java檔案這樣一個流程嗎?

4,如果說3問題中的確是jsp檔案中包含大量java代碼,那的確是沒有很好的解耦,那我剛剛說的那個.net的專案,這樣的一個流程是不是意味著前后端解耦的還不錯?

5,我有點納悶的是,為什么那個.net專案中,我一個html檔案都找不到,全都是cshtml檔案,然后還有大量的js檔案,和cs檔案(c#代碼)。

謝謝各位了,我其實是個剛進入web開發這個大海里的一個菜鳥

uj5u.com熱心網友回復:

1、其實就是mvc了,這個流程應該是目前web開發的主流。
2、jsp其實對應于aspx,cshtml是充當mvc中的視圖部分。jsp可以嵌入java,aspx也可以嵌入c#,cshtml也可以嵌入c#。
3、jsp本來就允許嵌入大量java代碼,所以java web中一般用servlet作為controller,jsp只充當視圖部分,并且要求盡量少的嵌入java代碼。jsp中可以有大量js,并使用ajax與后臺servlet互動。
4、jsp包含大量java,確實不是很好的解耦。所以java web開發引入了struts spring hibernate或者spring mvc mybatis這樣的框架,實作mvc。對應的,微軟推出的asp.net mvc就是mvc框架的實作。
5、這就是asp.net mvc的設計思想。cshtml可以通過razor語法在頁面中輸出c#物件,而html不行。

uj5u.com熱心網友回復:

參考 1 樓 guwei4037 的回復:
1、其實就是mvc了,這個流程應該是目前web開發的主流。
2、jsp其實對應于aspx,cshtml是充當mvc中的視圖部分。jsp可以嵌入java,aspx也可以嵌入c#,cshtml也可以嵌入c#。
3、jsp本來就允許嵌入大量java代碼,所以java web中一般用servlet作為controller,jsp只充當視圖部分,并且要求盡量少的嵌入java代碼。jsp中可以有大量js,并使用ajax與后臺servlet互動。
4、jsp包含大量java,確實不是很好的解耦。所以java web開發引入了struts spring hibernate或者spring mvc mybatis這樣的框架,實作mvc。對應的,微軟推出的asp.net mvc就是mvc框架的實作。
5、這就是asp.net mvc的設計思想。cshtml可以通過razor語法在頁面中輸出c#物件,而html不行。
謝謝回答,如果jsp或者aspx中包含java代碼或者c#代碼,是不是就必須放在服務器端運行一下然后再回傳給瀏覽器?那如果不包含的話呢,是否就意味著它們只充當view部分,可以直接被瀏覽器決議,不需要在服務器端運行?但我記得html檔案中也可以包含js代碼,那html檔案豈不是也可以來做view層?

uj5u.com熱心網友回復:

web 開發的“主流”核心架構是用戶互動,而不是什么“前后端互動”。前后端互動是b/s 互動技術概念,它必須隨著用戶互動需求(也就是 Web2.0、web3.0......)和通訊技術不斷演進。許多人忽略了編程設計重點,而糾結底層的一點東西,這個時候爭論“主流”就可能跟不上形勢。

比如說web服務器端的 mvc 開源框架在很早就出現,asp.net mvc 也是模仿10幾年前的 struts,而在 java 中也有很多種 mvc 形式(而 asp.net 因為比較封閉所以只有一種)。而 java 始終沒有什么類似 webform、asp.net ajax 服務器端控制元件 那樣的幾十個企業級服務器端控制元件。雖然這些都過時了,但是過去就是如此,asp.net 在看到服務器端控制元件的模式整體要被拋棄的時候,也沒有什么新東西拿出來。所以這些都不是什么新的東西。

在 view 中的所有資料系結的東西,你都可以說是 c# 的。只不過是語法跟 .cs 檔案中的代碼的語法不同罷了。你不能說 view 中只有 html 和 js。不論是 html 還是 js 都不是在服務器端渲染和執行的,所以 view 模板使用來動態系結輸出 html 給瀏覽器端的。

mvc 是最簡單的一個概念。controller 處理 <form action=...> 的請求,然后系結 view 產生 html輸出給瀏覽器端。你只有先學會了 html/css/javascript 網站應用編程,才能學好 web 服務器端編程。這個時候其實就是通過這種 <form action=.....> 提交和反復一遍遍重繪頁面的形式來處理。實際上我們可以看到,富客戶端 web 編程根本不走這個方式,所以 asp.net mvc 其實對于這種 web 應用系統開發是沒有什么用處的。但是假設你被微軟的熱情沖昏了頭腦,可能以為富客戶端的應用也靠asp.net mvc 編程。

回到你的“解耦”的問題,Controller 是用來接收 <form action=.....> 提交的資料的,這里僅僅是接收前端表單資料,然后 Controller 就產生了資料轉換來計算出輸出的資料。然后找到對應的 View 來系結輸出資料到產出的 html 代碼上。你說這有沒有解耦?

只不過 mvc 其實誰最簡單的框架,沒有多少技術深度的東西,所以你覺得不相信它如此簡單。

你的最后一個問題,要知道asp.net或者 jsp 之類的都是動態html 生成語言,它自然是產生 html 輸出的工具。你只知道去找靜態 html 檔案是不對的。

uj5u.com熱心網友回復:

cshtml就是視圖view部分。
當中可以嵌套C#代碼。
至于你說的是否捆綁在一起。其實cshtml中的C#代碼,只是控制model或者viewmodel資料的顯示或者少許的邏輯判斷。

uj5u.com熱心網友回復:

參考 2 樓 ddj11223 的回復:
謝謝回答,如果jsp或者aspx中包含java代碼或者c#代碼,是不是就必須放在服務器端運行一下然后再回傳給瀏覽器?那如果不包含的話呢,是否就意味著它們只充當view部分,可以直接被瀏覽器決議,不需要在服務器端運行?但我記得html檔案中也可以包含js代碼,那html檔案豈不是也可以來做view層?


這就跟前端 web 應用模式有關。你如果學習的 web 應用是不走 <form action=....> 這種表單提交、重繪整頁面的形式,你就在另外一個廣闊天地中遨游,而你問的問題始終是服務器端 mvc。

實際上富客戶端是前端獨立的應用程式,比如說2個小時也不重繪一次頁面。那么其前端模板、資料、樣式、js代碼等等,都可以通過 ajax.get 或者 websocket 等等等等通訊形式拉取到前端(瀏覽器運行時),在前端處理。此時直接拉取 html 片段當然是最好的,為什么還要服務器端 asp.net 程式產生 html 呢?

于是,你的問題其實就應該是,“前端View應該直接使用 html檔案”。而且這些 html 檔案其實不需要是完整網頁,是一些片段 html 就可以了。例如在一個頁面上可以用
<div my-binding="template:{name: xxxx, data: yyyy, if: zzz>100}"></div>
這樣前端框架就能在zzz大于100時就去自動下載xxxx模板,放到 <div>里邊,跟資料 yyyy系結在一起(10幾行html代碼可能系結出上千行 html 代碼);當zzz<=100時前端框架又會自動清空<div>中的內容。

而且頁面上可以有許多這樣的模板系結,模板中可以嵌套模板。頁面是組件化的。所以你說的 View不但可以使純 html,而且是片段html,而且頁面上可以重復使用相同模板,可以在頁面上作為組件來隨意搭積木、卡榫卯一樣地動態搭在一起。

但是要知道這些都是前端框架知識。而此時 asp.net 端的代碼沒用。

uj5u.com熱心網友回復:

許多人以為“我可以用 asp.net 來撰寫用戶體驗超好的web應用程式”,其實這里就是有歧義的東西。asp.net 并不包含那些知識。MVC模式就是用來處理 <form action=....>表達提交、然后重繪頁面的。所以這不是富客戶端編程模式。

比如說我們在一個很“長”(可以無限下拉)很酷的頁面中讓用戶選擇和試看電影,然后用戶一旦付費看一個電影,我們需要跳轉到一個電影播放頁面,那么我們在前一個頁面中使用 ajax 或者 websocket 通訊方式向服務器下訂單,然后直接使用 
window.location.href = .........play?id=......
重定向頁面就行了,這個程序并不需要提交 <form action=....> 表單。甚至,其實我們可以是單頁面 web 應用,所有功能都不重繪頁面,而是動態模板自動展示。

你的問題可能本身的需求就是直指富客戶端編程框架,而表面上你又糾結在 asp.net 的 Controller 和 View 上了。

uj5u.com熱心網友回復:

要想從用戶體驗出發,開發大型 web 應用,那么對不起,你必須前端解耦。

而不是在 asp.net 服務器端去過分去分層。

uj5u.com熱心網友回復:

參考 3 樓 sp1234 的回復:
web 開發的“主流”核心架構是用戶互動,而不是什么“前后端互動”。前后端互動是b/s 互動技術概念,它必須隨著用戶互動需求(也就是 Web2.0、web3.0......)和通訊技術不斷演進。許多人忽略了編程設計重點,而糾結底層的一點東西,這個時候爭論“主流”就可能跟不上形勢。

比如說web服務器端的 mvc 開源框架在很早就出現,asp.net mvc 也是模仿10幾年前的 struts,而在 java 中也有很多種 mvc 形式(而 asp.net 因為比較封閉所以只有一種)。而 java 始終沒有什么類似 webform、asp.net ajax 服務器端控制元件 那樣的幾十個企業級服務器端控制元件。雖然這些都過時了,但是過去就是如此,asp.net 在看到服務器端控制元件的模式整體要被拋棄的時候,也沒有什么新東西拿出來。所以這些都不是什么新的東西。

在 view 中的所有資料系結的東西,你都可以說是 c# 的。只不過是語法跟 .cs 檔案中的代碼的語法不同罷了。你不能說 view 中只有 html 和 js。不論是 html 還是 js 都不是在服務器端渲染和執行的,所以 view 模板使用來動態系結輸出 html 給瀏覽器端的。

mvc 是最簡單的一個概念。controller 處理 <form action=...> 的請求,然后系結 view 產生 html輸出給瀏覽器端。你只有先學會了 html/css/javascript 網站應用編程,才能學好 web 服務器端編程。這個時候其實就是通過這種 <form action=.....> 提交和反復一遍遍重繪頁面的形式來處理。實際上我們可以看到,富客戶端 web 編程根本不走這個方式,所以 asp.net mvc 其實對于這種 web 應用系統開發是沒有什么用處的。但是假設你被微軟的熱情沖昏了頭腦,可能以為富客戶端的應用也靠asp.net mvc 編程。

回到你的“解耦”的問題,Controller 是用來接收 <form action=.....> 提交的資料的,這里僅僅是接收前端表單資料,然后 Controller 就產生了資料轉換來計算出輸出的資料。然后找到對應的 View 來系結輸出資料到產出的 html 代碼上。你說這有沒有解耦?

只不過 mvc 其實誰最簡單的框架,沒有多少技術深度的東西,所以你覺得不相信它如此簡單。

你的最后一個問題,要知道asp.net或者 jsp 之類的都是動態html 生成語言,它自然是產生 html 輸出的工具。你只知道去找靜態 html 檔案是不對的。
謝謝回答。你的意思是富客戶端不需要一遍遍重繪,直接用ajax來獲取資料并且由js來負責更新。這個我感覺就是解耦了吧,html和js來當view層(view層不包含任何后端的代碼),服務器端代碼做m層和c層,這樣不就是mvc的一個概念嗎?我前端html和js學過一點,后端的java和c#也學過一點,但唯獨就是兩者結合起來構成一個網站的運作這方面我還是空白,所以有些地方概念不是很清楚,還請多多指教

uj5u.com熱心網友回復:

參考 7 樓 sp1234 的回復:
要想從用戶體驗出發,開發大型 web 應用,那么對不起,你必須前端解耦。

而不是在 asp.net 服務器端去過分去分層。
啊...我一直以為view層就是前端頁面啊,難道我理解錯了?

uj5u.com熱心網友回復:

參考 6 樓 sp1234 的回復:
許多人以為“我可以用 asp.net 來撰寫用戶體驗超好的web應用程式”,其實這里就是有歧義的東西。asp.net 并不包含那些知識。MVC模式就是用來處理 <form action=....>表達提交、然后重繪頁面的。所以這不是富客戶端編程模式。

比如說我們在一個很“長”(可以無限下拉)很酷的頁面中讓用戶選擇和試看電影,然后用戶一旦付費看一個電影,我們需要跳轉到一個電影播放頁面,那么我們在前一個頁面中使用 ajax 或者 websocket 通訊方式向服務器下訂單,然后直接使用 
window.location.href = .........play?id=......
重定向頁面就行了,這個程序并不需要提交 <form action=....> 表單。甚至,其實我們可以是單頁面 web 應用,所有功能都不重繪頁面,而是動態模板自動展示。

你的問題可能本身的需求就是直指富客戶端編程框架,而表面上你又糾結在 asp.net 的 Controller 和 View 上了。
我所理解的view層就是前端頁面的html和js這些東西,然后m層和c層就是服務器端的c#代碼,我以為,只要view層不包含除了html和js以外的瀏覽器不認識的代碼,就算是解耦了,mvc做不到這樣嗎?

uj5u.com熱心網友回復:

參考 10 樓 ddj11223 的回復:
Quote: 參考 6 樓 sp1234 的回復:

許多人以為“我可以用 asp.net 來撰寫用戶體驗超好的web應用程式”,其實這里就是有歧義的東西。asp.net 并不包含那些知識。MVC模式就是用來處理 <form action=....>表達提交、然后重繪頁面的。所以這不是富客戶端編程模式。

比如說我們在一個很“長”(可以無限下拉)很酷的頁面中讓用戶選擇和試看電影,然后用戶一旦付費看一個電影,我們需要跳轉到一個電影播放頁面,那么我們在前一個頁面中使用 ajax 或者 websocket 通訊方式向服務器下訂單,然后直接使用 
window.location.href = .........play?id=......
重定向頁面就行了,這個程序并不需要提交 <form action=....> 表單。甚至,其實我們可以是單頁面 web 應用,所有功能都不重繪頁面,而是動態模板自動展示。

你的問題可能本身的需求就是直指富客戶端編程框架,而表面上你又糾結在 asp.net 的 Controller 和 View 上了。
我所理解的view層就是前端頁面的html和js這些東西,然后m層和c層就是服務器端的c#代碼,我以為,只要view層不包含除了html和js以外的瀏覽器不認識的代碼,就算是解耦了,mvc做不到這樣嗎?


做不到,我現在自己正在開發一個這樣的架構,就是你所說的前端只有 html、css、js 等等。

現在的 angular、react、vue 其實前端就是 html,不過也要加上系結資料的代碼。

你的想法很好。

uj5u.com熱心網友回復:

參考 11 樓 closurer 的回復:
Quote: 參考 10 樓 ddj11223 的回復:

Quote: 參考 6 樓 sp1234 的回復:

許多人以為“我可以用 asp.net 來撰寫用戶體驗超好的web應用程式”,其實這里就是有歧義的東西。asp.net 并不包含那些知識。MVC模式就是用來處理 <form action=....>表達提交、然后重繪頁面的。所以這不是富客戶端編程模式。

比如說我們在一個很“長”(可以無限下拉)很酷的頁面中讓用戶選擇和試看電影,然后用戶一旦付費看一個電影,我們需要跳轉到一個電影播放頁面,那么我們在前一個頁面中使用 ajax 或者 websocket 通訊方式向服務器下訂單,然后直接使用 
window.location.href = .........play?id=......
重定向頁面就行了,這個程序并不需要提交 <form action=....> 表單。甚至,其實我們可以是單頁面 web 應用,所有功能都不重繪頁面,而是動態模板自動展示。

你的問題可能本身的需求就是直指富客戶端編程框架,而表面上你又糾結在 asp.net 的 Controller 和 View 上了。
我所理解的view層就是前端頁面的html和js這些東西,然后m層和c層就是服務器端的c#代碼,我以為,只要view層不包含除了html和js以外的瀏覽器不認識的代碼,就算是解耦了,mvc做不到這樣嗎?


做不到,我現在自己正在開發一個這樣的架構,就是你所說的前端只有 html、css、js 等等。

現在的 angular、react、vue 其實前端就是 html,不過也要加上系結資料的代碼。

你的想法很好。
系結資料的代碼指的是?但我看這個專案里面,cshtml檔案里面的確是只有html和js,沒別的種類的代碼了,這樣和服務器端互動不就靠ajax和post還有get,不就行了嗎?

uj5u.com熱心網友回復:

參考 12 樓 ddj11223 的回復:
系結資料的代碼指的是?但我看這個專案里面,cshtml檔案里面的確是只有html和js,沒別的種類的代碼了,這樣和服務器端互動不就靠ajax和post還有get,不就行了嗎?

那你的專案可能是采用ajax來異步獲取資料。然后在success中進行html的操作。
如果你說前臺只是css+html+js的話,那也無可厚非。
其實這種方式,就想現在許多的  html+webapi和 hbuilder+webapi都是一樣的。
只是在前臺操作資料的方式,從C#操作model,變為了js來操作json。那既然這樣,你又何必使用asp.net的mvc框架呢。看起來你其實根本不需要用到razor引擎。

uj5u.com熱心網友回復:

參考 13 樓 hanjun0612 的回復:
Quote: 參考 12 樓 ddj11223 的回復:

系結資料的代碼指的是?但我看這個專案里面,cshtml檔案里面的確是只有html和js,沒別的種類的代碼了,這樣和服務器端互動不就靠ajax和post還有get,不就行了嗎?

那你的專案可能是采用ajax來異步獲取資料。然后在success中進行html的操作。
如果你說前臺只是css+html+js的話,那也無可厚非。
其實這種方式,就想現在許多的  html+webapi和 hbuilder+webapi都是一樣的。
只是在前臺操作資料的方式,從C#操作model,變為了js來操作json。那既然這樣,你又何必使用asp.net的mvc框架呢。看起來你其實根本不需要用到razor引擎。
不用mvc框架的話,那我服務器端怎么搞呢,M和C不都是屬于服務器端作業的嗎?你們指的mvc中的view,指的是cshtml檔案中包含c#代碼的?那這樣豈不是解耦不太好?這種情況我感覺應該是第一次請求這個網頁的話,應該是服務器那邊全處理好再發給前端吧,之后就可以用ajax來做事情了

uj5u.com熱心網友回復:

額,我表示。對于剛接觸的人就寫別在乎什么了,把東西弄出來了,有概念了在說
完全沒有概念的話,在去講什么工程化,流程化,解耦一類的都是沒依據的。

沒有目標,沒有方向,沒有實踐的只單單在XX園看幾篇忽略目標,忽略方向,忽略實踐的所謂“優化”“工程化”“性能云云”的文章都是沒意義的。

我們看這類文章首先看的是,歷史遺留分析,改造思路,而不是看那個結論,那些結論在拋掉前提的情況下完全沒有意義

uj5u.com熱心網友回復:

包括樓上sp1234說的那些,那都是他經歷過這么多年的實踐,對各種流派演化實踐得的結論

這些結論對于有同樣經歷和背景的人有意義,對于你這樣還沒開始做,就在糾結的人并沒有意義

uj5u.com熱心網友回復:

1、是
2、只是你的專案沒有包含,是可以包含的
3、4沒有任何意義,這跟解耦沒關系。
5、你又沒有給別人說你想要HTML格式的,別人肯定不會照顧你的口味

uj5u.com熱心網友回復:

另外你的問題其實也是歷史遺留問題,你用的是asp.net,是jsp。你生成的工程專案實際上是“上一代”工程專案,你在糾結上面那些人跟你講的“最新一代”技術怎么跟你“上一代”的工程專案完全不一樣?

在你上一代里,你去講view檔案夾,control檔案夾,model檔案夾。

而在新一代的專案了,其實根本就沒有這些檔案夾了,他們可以是3個工程,3個專案。

uj5u.com熱心網友回復:

參考 17 樓 baidu_27549073 的回復:
1、是
2、只是你的專案沒有包含,是可以包含的
3、4沒有任何意義,這跟解耦沒關系。
5、你又沒有給別人說你想要HTML格式的,別人肯定不會照顧你的口味
這個專案里的cshtml檔案里面全都是html代碼和js代碼,沒有任何c#代碼

uj5u.com熱心網友回復:

參考 19 樓 ddj11223 的回復:
Quote: 參考 17 樓 baidu_27549073 的回復:

1、是
2、只是你的專案沒有包含,是可以包含的
3、4沒有任何意義,這跟解耦沒關系。
5、你又沒有給別人說你想要HTML格式的,別人肯定不會照顧你的口味
這個專案里的cshtml檔案里面全都是html代碼和js代碼,沒有任何c#代碼,那這個cshtml檔案和html檔案還有啥區別

uj5u.com熱心網友回復:

在最新一代的專案里

你view工程可以什么都沒有,只是一堆html和js
你的control工程,可以是nodejs(nodejs好處是輕量,同時本身就是js物件,他不存在前后端物件轉換的問題,壞處嘛就是你的跟js這個最不講道理,最無厘頭的語言打交道了),可以是net core,可以標準的net,他只需支持rest和websocet雙工通訊
你的model工程,這個就見仁見智了,你可以要,可以不要。比如我和sp1234都比較喜歡knockout,因為這個比anglr,vue輕量,同時也有工具將你的model轉換成復合knockout物件的vs插件(當然你也可以自己找生成vue或angrl物件的插件)

這樣的專案架子,誰說他不不具備可行性呢?

uj5u.com熱心網友回復:

參考 21 樓 wanghui0380 的回復:
在最新一代的專案里

你view工程可以什么都沒有,只是一堆html和js
你的control工程,可以是nodejs(nodejs好處是輕量,同時本身就是js物件,他不存在前后端物件轉換的問題,壞處嘛就是你的跟js這個最不講道理,最無厘頭的語言打交道了),可以是net core,可以標準的net,他只需支持rest和websocet雙工通訊
你的model工程,這個就見仁見智了,你可以要,可以不要。比如我和sp1234都比較喜歡knockout,因為這個比anglr,vue輕量,同時也有工具將你的model轉換成復合knockout物件的vs插件(當然你也可以自己找生成vue或angrl物件的插件)

這樣的專案架子,誰說他不不具備可行性呢?
大神,看起來mvc現在也要被淘汰了啊,我居然才剛剛開始接觸。。。難道.net的mvc架構的view里面不能只包含html和js嗎?一定要含有服務器端的代碼?做ajax不就行了嘛

uj5u.com熱心網友回復:

參考 22 樓 ddj11223 的回復:
Quote: 參考 21 樓 wanghui0380 的回復:

在最新一代的專案里

你view工程可以什么都沒有,只是一堆html和js
你的control工程,可以是nodejs(nodejs好處是輕量,同時本身就是js物件,他不存在前后端物件轉換的問題,壞處嘛就是你的跟js這個最不講道理,最無厘頭的語言打交道了),可以是net core,可以標準的net,他只需支持rest和websocet雙工通訊
你的model工程,這個就見仁見智了,你可以要,可以不要。比如我和sp1234都比較喜歡knockout,因為這個比anglr,vue輕量,同時也有工具將你的model轉換成復合knockout物件的vs插件(當然你也可以自己找生成vue或angrl物件的插件)

這樣的專案架子,誰說他不不具備可行性呢?
大神,看起來mvc現在也要被淘汰了啊,我居然才剛剛開始接觸。。。難道.net的mvc架構的view里面不能只包含html和js嗎?一定要含有服務器端的代碼?做ajax不就行了嘛


可以的,尤其是不需要做 SEO 的網站,可以這樣做。

uj5u.com熱心網友回復:

參考 23 樓 closurer 的回復:
Quote: 參考 22 樓 ddj11223 的回復:

Quote: 參考 21 樓 wanghui0380 的回復:

在最新一代的專案里

你view工程可以什么都沒有,只是一堆html和js
你的control工程,可以是nodejs(nodejs好處是輕量,同時本身就是js物件,他不存在前后端物件轉換的問題,壞處嘛就是你的跟js這個最不講道理,最無厘頭的語言打交道了),可以是net core,可以標準的net,他只需支持rest和websocet雙工通訊
你的model工程,這個就見仁見智了,你可以要,可以不要。比如我和sp1234都比較喜歡knockout,因為這個比anglr,vue輕量,同時也有工具將你的model轉換成復合knockout物件的vs插件(當然你也可以自己找生成vue或angrl物件的插件)

這樣的專案架子,誰說他不不具備可行性呢?
大神,看起來mvc現在也要被淘汰了啊,我居然才剛剛開始接觸。。。難道.net的mvc架構的view里面不能只包含html和js嗎?一定要含有服務器端的代碼?做ajax不就行了嘛


可以的,尤其是不需要做 SEO 的網站,可以這樣做。
但是第一次請求這個網頁的時候,還是得需要服務器端來處理的,接下來就可以全靠ajax了

uj5u.com熱心網友回復:

參考 24 樓 ddj11223 的回復:
Quote: 參考 23 樓 closurer 的回復:

Quote: 參考 22 樓 ddj11223 的回復:

Quote: 參考 21 樓 wanghui0380 的回復:

在最新一代的專案里

你view工程可以什么都沒有,只是一堆html和js
你的control工程,可以是nodejs(nodejs好處是輕量,同時本身就是js物件,他不存在前后端物件轉換的問題,壞處嘛就是你的跟js這個最不講道理,最無厘頭的語言打交道了),可以是net core,可以標準的net,他只需支持rest和websocet雙工通訊
你的model工程,這個就見仁見智了,你可以要,可以不要。比如我和sp1234都比較喜歡knockout,因為這個比anglr,vue輕量,同時也有工具將你的model轉換成復合knockout物件的vs插件(當然你也可以自己找生成vue或angrl物件的插件)

這樣的專案架子,誰說他不不具備可行性呢?
大神,看起來mvc現在也要被淘汰了啊,我居然才剛剛開始接觸。。。難道.net的mvc架構的view里面不能只包含html和js嗎?一定要含有服務器端的代碼?做ajax不就行了嘛


可以的,尤其是不需要做 SEO 的網站,可以這樣做。
但是第一次請求這個網頁的時候,還是得需要服務器端來處理的,接下來就可以全靠ajax了


不是這樣理解的。都得服務器來處理,我的意思是不需要寫 razor,就是 @ 啊 <% %> 之類的標記。

uj5u.com熱心網友回復:

參考 25 樓 closurer 的回復:
Quote: 參考 24 樓 ddj11223 的回復:

Quote: 參考 23 樓 closurer 的回復:

Quote: 參考 22 樓 ddj11223 的回復:

Quote: 參考 21 樓 wanghui0380 的回復:

在最新一代的專案里

你view工程可以什么都沒有,只是一堆html和js
你的control工程,可以是nodejs(nodejs好處是輕量,同時本身就是js物件,他不存在前后端物件轉換的問題,壞處嘛就是你的跟js這個最不講道理,最無厘頭的語言打交道了),可以是net core,可以標準的net,他只需支持rest和websocet雙工通訊
你的model工程,這個就見仁見智了,你可以要,可以不要。比如我和sp1234都比較喜歡knockout,因為這個比anglr,vue輕量,同時也有工具將你的model轉換成復合knockout物件的vs插件(當然你也可以自己找生成vue或angrl物件的插件)

這樣的專案架子,誰說他不不具備可行性呢?
大神,看起來mvc現在也要被淘汰了啊,我居然才剛剛開始接觸。。。難道.net的mvc架構的view里面不能只包含html和js嗎?一定要含有服務器端的代碼?做ajax不就行了嘛


可以的,尤其是不需要做 SEO 的網站,可以這樣做。
但是第一次請求這個網頁的時候,還是得需要服務器端來處理的,接下來就可以全靠ajax了


不是這樣理解的。都得服務器來處理,我的意思是不需要寫 razor,就是 @ 啊 <% %> 之類的標記。
你的意思是cshtml檔案里面必須要寫c#代碼?我感覺不用啊,我ajax之后得到的資料交給js去更新web頁面不就行了嗎?

uj5u.com熱心網友回復:

參考 26 樓 ddj11223 的回復:
Quote: 參考 25 樓 closurer 的回復:

Quote: 參考 24 樓 ddj11223 的回復:

Quote: 參考 23 樓 closurer 的回復:

Quote: 參考 22 樓 ddj11223 的回復:

Quote: 參考 21 樓 wanghui0380 的回復:

在最新一代的專案里

你view工程可以什么都沒有,只是一堆html和js
你的control工程,可以是nodejs(nodejs好處是輕量,同時本身就是js物件,他不存在前后端物件轉換的問題,壞處嘛就是你的跟js這個最不講道理,最無厘頭的語言打交道了),可以是net core,可以標準的net,他只需支持rest和websocet雙工通訊
你的model工程,這個就見仁見智了,你可以要,可以不要。比如我和sp1234都比較喜歡knockout,因為這個比anglr,vue輕量,同時也有工具將你的model轉換成復合knockout物件的vs插件(當然你也可以自己找生成vue或angrl物件的插件)

這樣的專案架子,誰說他不不具備可行性呢?
大神,看起來mvc現在也要被淘汰了啊,我居然才剛剛開始接觸。。。難道.net的mvc架構的view里面不能只包含html和js嗎?一定要含有服務器端的代碼?做ajax不就行了嘛


可以的,尤其是不需要做 SEO 的網站,可以這樣做。
但是第一次請求這個網頁的時候,還是得需要服務器端來處理的,接下來就可以全靠ajax了


不是這樣理解的。都得服務器來處理,我的意思是不需要寫 razor,就是 @ 啊 <% %> 之類的標記。
你的意思是cshtml檔案里面必須要寫c#代碼?我感覺不用啊,我ajax之后得到的資料交給js去更新web頁面不就行了嗎?


呃……你說得對,相信自己……實踐出真知……

uj5u.com熱心網友回復:

專案對功能性有需求,就用SPA,也就是前后端完全分離,這樣razor用到的就會少
對內容需求大,還是MVC,回應速度快,利于SEO,
用SPA的現在基本上都是做移動app的,成本低,跨平臺

uj5u.com熱心網友回復:

參考 27 樓 closurer 的回復:
Quote: 參考 26 樓 ddj11223 的回復:

Quote: 參考 25 樓 closurer 的回復:

Quote: 參考 24 樓 ddj11223 的回復:

Quote: 參考 23 樓 closurer 的回復:

Quote: 參考 22 樓 ddj11223 的回復:

Quote: 參考 21 樓 wanghui0380 的回復:

在最新一代的專案里

你view工程可以什么都沒有,只是一堆html和js
你的control工程,可以是nodejs(nodejs好處是輕量,同時本身就是js物件,他不存在前后端物件轉換的問題,壞處嘛就是你的跟js這個最不講道理,最無厘頭的語言打交道了),可以是net core,可以標準的net,他只需支持rest和websocet雙工通訊
你的model工程,這個就見仁見智了,你可以要,可以不要。比如我和sp1234都比較喜歡knockout,因為這個比anglr,vue輕量,同時也有工具將你的model轉換成復合knockout物件的vs插件(當然你也可以自己找生成vue或angrl物件的插件)

這樣的專案架子,誰說他不不具備可行性呢?
大神,看起來mvc現在也要被淘汰了啊,我居然才剛剛開始接觸。。。難道.net的mvc架構的view里面不能只包含html和js嗎?一定要含有服務器端的代碼?做ajax不就行了嘛


可以的,尤其是不需要做 SEO 的網站,可以這樣做。
但是第一次請求這個網頁的時候,還是得需要服務器端來處理的,接下來就可以全靠ajax了


不是這樣理解的。都得服務器來處理,我的意思是不需要寫 razor,就是 @ 啊 <% %> 之類的標記。
你的意思是cshtml檔案里面必須要寫c#代碼?我感覺不用啊,我ajax之后得到的資料交給js去更新web頁面不就行了嗎?


呃……你說得對,相信自己……實踐出真知……
你這么說,我感覺我好菜啊,主要是別人的專案,所以我想著我自己先大致了解點之后,再去問別人,這樣他講起來我至少能夠聽得懂,不然我怕我聽得云里霧里

uj5u.com熱心網友回復:

參考 29 樓 ddj11223 的回復:
Quote: 參考 27 樓 closurer 的回復:

Quote: 參考 26 樓 ddj11223 的回復:

Quote: 參考 25 樓 closurer 的回復:

Quote: 參考 24 樓 ddj11223 的回復:

Quote: 參考 23 樓 closurer 的回復:

Quote: 參考 22 樓 ddj11223 的回復:

Quote: 參考 21 樓 wanghui0380 的回復:

在最新一代的專案里

你view工程可以什么都沒有,只是一堆html和js
你的control工程,可以是nodejs(nodejs好處是輕量,同時本身就是js物件,他不存在前后端物件轉換的問題,壞處嘛就是你的跟js這個最不講道理,最無厘頭的語言打交道了),可以是net core,可以標準的net,他只需支持rest和websocet雙工通訊
你的model工程,這個就見仁見智了,你可以要,可以不要。比如我和sp1234都比較喜歡knockout,因為這個比anglr,vue輕量,同時也有工具將你的model轉換成復合knockout物件的vs插件(當然你也可以自己找生成vue或angrl物件的插件)

這樣的專案架子,誰說他不不具備可行性呢?
大神,看起來mvc現在也要被淘汰了啊,我居然才剛剛開始接觸。。。難道.net的mvc架構的view里面不能只包含html和js嗎?一定要含有服務器端的代碼?做ajax不就行了嘛


可以的,尤其是不需要做 SEO 的網站,可以這樣做。
但是第一次請求這個網頁的時候,還是得需要服務器端來處理的,接下來就可以全靠ajax了


不是這樣理解的。都得服務器來處理,我的意思是不需要寫 razor,就是 @ 啊 <% %> 之類的標記。
你的意思是cshtml檔案里面必須要寫c#代碼?我感覺不用啊,我ajax之后得到的資料交給js去更新web頁面不就行了嗎?


呃……你說得對,相信自己……實踐出真知……
你這么說,我感覺我好菜啊,主要是別人的專案,所以我想著我自己先大致了解點之后,再去問別人,這樣他講起來我至少能夠聽得懂,不然我怕我聽得云里霧里


前后端分離是好事,有利于分工,增加可維護性。

但是從邏輯上來說,再怎么分,都是一個系統,需要建立聯系的……至于怎么建立這種聯系,真是個說不盡的話題……

uj5u.com熱心網友回復:

用戶體驗是關鍵

uj5u.com熱心網友回復:

參考 20 樓 ddj11223 的回復:
Quote: 參考 19 樓 ddj11223 的回復:

Quote: 參考 17 樓 baidu_27549073 的回復:

1、是
2、只是你的專案沒有包含,是可以包含的
3、4沒有任何意義,這跟解耦沒關系。
5、你又沒有給別人說你想要HTML格式的,別人肯定不會照顧你的口味
這個專案里的cshtml檔案里面全都是html代碼和js代碼,沒有任何c#代碼,那這個cshtml檔案和html檔案還有啥區別

區別是呼叫邏輯不通,使用cshtml和controller,請求先到controller的action方法然后根據action回傳相應的cshtml檔案。如訪問http://www.baidu.com/Home/Index 是訪問的Homecontroller的Index()然后來生成對應的html。
使用html是直接決議的html地址。如訪問 http://www.baidu.com/index.html。IIS直接給你回傳index.html這個靜態頁面。
他們都是HTML的載體,但是html就是html,而cshtml是一種模板,可以動態改變cshtml的屬性,即使cshtml沒有任何C#代碼,但是還是可以在后臺控制,比如在action中判斷是否登錄,未登錄跳轉到404。而html不具有這種功能。
將Html跟chtml比是不對的,html對應的應該是整個MVC請求最后生成的動態HTML.

uj5u.com熱心網友回復:

參考 32 樓 baidu_27549073 的回復:
Quote: 參考 20 樓 ddj11223 的回復:

Quote: 參考 19 樓 ddj11223 的回復:

Quote: 參考 17 樓 baidu_27549073 的回復:

1、是
2、只是你的專案沒有包含,是可以包含的
3、4沒有任何意義,這跟解耦沒關系。
5、你又沒有給別人說你想要HTML格式的,別人肯定不會照顧你的口味
這個專案里的cshtml檔案里面全都是html代碼和js代碼,沒有任何c#代碼,那這個cshtml檔案和html檔案還有啥區別

區別是呼叫邏輯不通,使用cshtml和controller,請求先到controller的action方法然后根據action回傳相應的cshtml檔案。如訪問http://www.baidu.com/Home/Index 是訪問的Homecontroller的Index()然后來生成對應的html。
使用html是直接決議的html地址。如訪問 http://www.baidu.com/index.html。IIS直接給你回傳index.html這個靜態頁面。
他們都是HTML的載體,但是html就是html,而cshtml是一種模板,可以動態改變cshtml的屬性,即使cshtml沒有任何C#代碼,但是還是可以在后臺控制,比如在action中判斷是否登錄,未登錄跳轉到404。而html不具有這種功能。
將Html跟chtml比是不對的,html對應的應該是整個MVC請求最后生成的動態HTML.
恩,你這么說,我感覺我理解了,果然還是舉例子更容易讓人理解啊。動態和靜態的區別,我想我是理解了。但是如果html靜態頁面,我應該也可以通過往里面加入js來請求controller層的函式吧,相當于是ajax了,就是加載好html靜態頁面后,再由瀏覽器來主動請求資料并通過js去把資料布置上去,而非像之前說的讓服務器預先生成好資料再結合cshtml來回傳,這樣應該也可以吧?

uj5u.com熱心網友回復:

參考 33 樓 ddj11223 的回復:
Quote: 參考 32 樓 baidu_27549073 的回復:

Quote: 參考 20 樓 ddj11223 的回復:

Quote: 參考 19 樓 ddj11223 的回復:

Quote: 參考 17 樓 baidu_27549073 的回復:

1、是
2、只是你的專案沒有包含,是可以包含的
3、4沒有任何意義,這跟解耦沒關系。
5、你又沒有給別人說你想要HTML格式的,別人肯定不會照顧你的口味
這個專案里的cshtml檔案里面全都是html代碼和js代碼,沒有任何c#代碼,那這個cshtml檔案和html檔案還有啥區別

區別是呼叫邏輯不通,使用cshtml和controller,請求先到controller的action方法然后根據action回傳相應的cshtml檔案。如訪問http://www.baidu.com/Home/Index 是訪問的Homecontroller的Index()然后來生成對應的html。
使用html是直接決議的html地址。如訪問 http://www.baidu.com/index.html。IIS直接給你回傳index.html這個靜態頁面。
他們都是HTML的載體,但是html就是html,而cshtml是一種模板,可以動態改變cshtml的屬性,即使cshtml沒有任何C#代碼,但是還是可以在后臺控制,比如在action中判斷是否登錄,未登錄跳轉到404。而html不具有這種功能。
將Html跟chtml比是不對的,html對應的應該是整個MVC請求最后生成的動態HTML.
恩,你這么說,我感覺我理解了,果然還是舉例子更容易讓人理解啊。動態和靜態的區別,我想我是理解了。但是如果html靜態頁面,我應該也可以通過往里面加入js來請求controller層的函式吧,相當于是ajax了,就是加載好html靜態頁面后,再由瀏覽器來主動請求資料并通過js去把資料布置上去,而非像之前說的讓服務器預先生成好資料再結合cshtml來回傳,這樣應該也可以吧?

可以的,但是靜態頁面是所有人呢都能訪問的不好做權限管理

uj5u.com熱心網友回復:

參考 34 樓 baidu_27549073 的回復:
Quote: 參考 33 樓 ddj11223 的回復:

Quote: 參考 32 樓 baidu_27549073 的回復:

Quote: 參考 20 樓 ddj11223 的回復:

Quote: 參考 19 樓 ddj11223 的回復:

Quote: 參考 17 樓 baidu_27549073 的回復:

1、是
2、只是你的專案沒有包含,是可以包含的
3、4沒有任何意義,這跟解耦沒關系。
5、你又沒有給別人說你想要HTML格式的,別人肯定不會照顧你的口味
這個專案里的cshtml檔案里面全都是html代碼和js代碼,沒有任何c#代碼,那這個cshtml檔案和html檔案還有啥區別

區別是呼叫邏輯不通,使用cshtml和controller,請求先到controller的action方法然后根據action回傳相應的cshtml檔案。如訪問http://www.baidu.com/Home/Index 是訪問的Homecontroller的Index()然后來生成對應的html。
使用html是直接決議的html地址。如訪問 http://www.baidu.com/index.html。IIS直接給你回傳index.html這個靜態頁面。
他們都是HTML的載體,但是html就是html,而cshtml是一種模板,可以動態改變cshtml的屬性,即使cshtml沒有任何C#代碼,但是還是可以在后臺控制,比如在action中判斷是否登錄,未登錄跳轉到404。而html不具有這種功能。
將Html跟chtml比是不對的,html對應的應該是整個MVC請求最后生成的動態HTML.
恩,你這么說,我感覺我理解了,果然還是舉例子更容易讓人理解啊。動態和靜態的區別,我想我是理解了。但是如果html靜態頁面,我應該也可以通過往里面加入js來請求controller層的函式吧,相當于是ajax了,就是加載好html靜態頁面后,再由瀏覽器來主動請求資料并通過js去把資料布置上去,而非像之前說的讓服務器預先生成好資料再結合cshtml來回傳,這樣應該也可以吧?

可以的,但是靜態頁面是所有人呢都能訪問的不好做權限管理
哦對,但是現在很多人喊著jsp,aspx淘汰了,喊著前后端解耦,難道jsp,aspx解耦做得不夠好,我感覺他倆不都已經把view層和controller層分開了嗎

uj5u.com熱心網友回復:

參考 35 樓 ddj11223 的回復:
Quote: 參考 34 樓 baidu_27549073 的回復:

Quote: 參考 33 樓 ddj11223 的回復:

Quote: 參考 32 樓 baidu_27549073 的回復:

Quote: 參考 20 樓 ddj11223 的回復:

Quote: 參考 19 樓 ddj11223 的回復:

Quote: 參考 17 樓 baidu_27549073 的回復:

1、是
2、只是你的專案沒有包含,是可以包含的
3、4沒有任何意義,這跟解耦沒關系。
5、你又沒有給別人說你想要HTML格式的,別人肯定不會照顧你的口味
這個專案里的cshtml檔案里面全都是html代碼和js代碼,沒有任何c#代碼,那這個cshtml檔案和html檔案還有啥區別

區別是呼叫邏輯不通,使用cshtml和controller,請求先到controller的action方法然后根據action回傳相應的cshtml檔案。如訪問http://www.baidu.com/Home/Index 是訪問的Homecontroller的Index()然后來生成對應的html。
使用html是直接決議的html地址。如訪問 http://www.baidu.com/index.html。IIS直接給你回傳index.html這個靜態頁面。
他們都是HTML的載體,但是html就是html,而cshtml是一種模板,可以動態改變cshtml的屬性,即使cshtml沒有任何C#代碼,但是還是可以在后臺控制,比如在action中判斷是否登錄,未登錄跳轉到404。而html不具有這種功能。
將Html跟chtml比是不對的,html對應的應該是整個MVC請求最后生成的動態HTML.
恩,你這么說,我感覺我理解了,果然還是舉例子更容易讓人理解啊。動態和靜態的區別,我想我是理解了。但是如果html靜態頁面,我應該也可以通過往里面加入js來請求controller層的函式吧,相當于是ajax了,就是加載好html靜態頁面后,再由瀏覽器來主動請求資料并通過js去把資料布置上去,而非像之前說的讓服務器預先生成好資料再結合cshtml來回傳,這樣應該也可以吧?

可以的,但是靜態頁面是所有人呢都能訪問的不好做權限管理
哦對,但是現在很多人喊著jsp,aspx淘汰了,喊著前后端解耦,難道jsp,aspx解耦做得不夠好,我感覺他倆不都已經把view層和controller層分開了嗎

jsp,aspx淘汰不是因為解耦做的不夠好,是因為他們不能提供更酷炫的效果。像我現在之所以用aspx而少用mvc,是因為我們公司有3個游戲,每個游戲都有一套網站:網站后臺,游戲后臺,運營后臺等。所以一般簡單的功能我都使用WebForm,只有一些需要復雜前端效果的用MVC提供資料,js來展示資料。WebForm無疑更適合我現在的情況:小公司一個人維護大量平臺,我的所有網站都是以WEBForm為基礎,有空的時候加入了流行的bootstrap,MVC,EF,echart等各種各樣的東西。一個人首先要確定自己想要做什么,然后選用相應的技術,比如網站已酷炫為主,就需要以前端框架為主,后臺只負責提供資料。各種框架也不是說會用就好,各種框架其實也只是提供一個API的案例,不能幫助更快的做專案,必須自己去完善這個框架。
比如說我的專案中需要大量的資料查詢,各種分頁,各種篩選。我就自己封裝了一些功能,比如需要一個登陸資料,在后臺我只用定義對應的表,默認排序,資料庫連接,引數,和前臺系結到哪個repeater。就能直接系結資料

    public partial class LoginRecord : ListBasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Table = "RecordLogon";
            orderby = "LogonTime desc";
            Bind(rpt, Execute(where.ToString(), Config.DBRecord));
        }
        public LoginRecord()
        {
            orderby = "userid desc";
            SQLFrag.Add("uid", "and userid=@uid");
            SQLFrag.Add("mac", "and logonmac=@mac");
        }
    }

前臺頁面

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form method="get" action="LoginRecord.aspx">
        <label> 用戶ID:<input type="number" name="uid" value="https://bbs.csdn.net/topics/<%=GetCanshu("uid") %>"/></label>
        <label> Mac:<input type="text" name="mac" value="https://bbs.csdn.net/topics/<%=GetCanshu("mac") %>"/></label>
        <input type="submit" class="btn btn-success" value="https://bbs.csdn.net/topics/搜索" />
    </form>
    <table>
        <tr>
                <td>
                    用戶ID
                </td>
                <td>
                    登錄Mac
                </td>
                <td>
                    登錄時間
                </td>
                <td>
                    離開時間
                </td>
                <td>
                    登錄IP
                </td>
                <td></td>
        </tr>
        <asp:Repeater ID="rpt" runat="server">
            <ItemTemplate>
                <td>
                    <a href="https://bbs.csdn.net/topics/LoginRecord.aspx?uid=<%#Eval("userid") %>"><%#Eval("userid") %></a>
                </td>
                <td>
                    <a href="https://bbs.csdn.net/topics/LoginRecord.aspx?mac=<%#Eval("LogonMAC") %>"><%#Eval("LogonMAC") %></a>
                </td>
                <td>
                    <%#Eval("LogonTime") %>
                </td>
                <td>
                    <%#Eval("LogonOutTime") %>
                </td>
                <td>
                    <%#Eval("LogonIP") %>
                </td>
                <td>
                   <a onclick="top.OpenWinMin('LoginMacRecord.aspx','Mac匯總')">Mac匯總</a>
                </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>
    <%=strPage %>//這是后臺直接生成的分頁代碼
</body>
</html>

最后的效果如下:

如果是其他需求,封裝出的代碼又不一樣

uj5u.com熱心網友回復:

參考 36 樓 baidu_27549073 的回復:
Quote: 參考 35 樓 ddj11223 的回復:

Quote: 參考 34 樓 baidu_27549073 的回復:

Quote: 參考 33 樓 ddj11223 的回復:

Quote: 參考 32 樓 baidu_27549073 的回復:

Quote: 參考 20 樓 ddj11223 的回復:

Quote: 參考 19 樓 ddj11223 的回復:

Quote: 參考 17 樓 baidu_27549073 的回復:

1、是
2、只是你的專案沒有包含,是可以包含的
3、4沒有任何意義,這跟解耦沒關系。
5、你又沒有給別人說你想要HTML格式的,別人肯定不會照顧你的口味
這個專案里的cshtml檔案里面全都是html代碼和js代碼,沒有任何c#代碼,那這個cshtml檔案和html檔案還有啥區別

區別是呼叫邏輯不通,使用cshtml和controller,請求先到controller的action方法然后根據action回傳相應的cshtml檔案。如訪問http://www.baidu.com/Home/Index 是訪問的Homecontroller的Index()然后來生成對應的html。
使用html是直接決議的html地址。如訪問 http://www.baidu.com/index.html。IIS直接給你回傳index.html這個靜態頁面。
他們都是HTML的載體,但是html就是html,而cshtml是一種模板,可以動態改變cshtml的屬性,即使cshtml沒有任何C#代碼,但是還是可以在后臺控制,比如在action中判斷是否登錄,未登錄跳轉到404。而html不具有這種功能。
將Html跟chtml比是不對的,html對應的應該是整個MVC請求最后生成的動態HTML.
恩,你這么說,我感覺我理解了,果然還是舉例子更容易讓人理解啊。動態和靜態的區別,我想我是理解了。但是如果html靜態頁面,我應該也可以通過往里面加入js來請求controller層的函式吧,相當于是ajax了,就是加載好html靜態頁面后,再由瀏覽器來主動請求資料并通過js去把資料布置上去,而非像之前說的讓服務器預先生成好資料再結合cshtml來回傳,這樣應該也可以吧?

可以的,但是靜態頁面是所有人呢都能訪問的不好做權限管理
哦對,但是現在很多人喊著jsp,aspx淘汰了,喊著前后端解耦,難道jsp,aspx解耦做得不夠好,我感覺他倆不都已經把view層和controller層分開了嗎

jsp,aspx淘汰不是因為解耦做的不夠好,是因為他們不能提供更酷炫的效果。像我現在之所以用aspx而少用mvc,是因為我們公司有3個游戲,每個游戲都有一套網站:網站后臺,游戲后臺,運營后臺等。所以一般簡單的功能我都使用WebForm,只有一些需要復雜前端效果的用MVC提供資料,js來展示資料。WebForm無疑更適合我現在的情況:小公司一個人維護大量平臺,我的所有網站都是以WEBForm為基礎,有空的時候加入了流行的bootstrap,MVC,EF,echart等各種各樣的東西。一個人首先要確定自己想要做什么,然后選用相應的技術,比如網站已酷炫為主,就需要以前端框架為主,后臺只負責提供資料。各種框架也不是說會用就好,各種框架其實也只是提供一個API的案例,不能幫助更快的做專案,必須自己去完善這個框架。
比如說我的專案中需要大量的資料查詢,各種分頁,各種篩選。我就自己封裝了一些功能,比如需要一個登陸資料,在后臺我只用定義對應的表,默認排序,資料庫連接,引數,和前臺系結到哪個repeater。就能直接系結資料

    public partial class LoginRecord : ListBasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Table = "RecordLogon";
            orderby = "LogonTime desc";
            Bind(rpt, Execute(where.ToString(), Config.DBRecord));
        }
        public LoginRecord()
        {
            orderby = "userid desc";
            SQLFrag.Add("uid", "and userid=@uid");
            SQLFrag.Add("mac", "and logonmac=@mac");
        }
    }

前臺頁面

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form method="get" action="LoginRecord.aspx">
        <label> 用戶ID:<input type="number" name="uid" value="https://bbs.csdn.net/topics/<%=GetCanshu("uid") %>"/></label>
        <label> Mac:<input type="text" name="mac" value="https://bbs.csdn.net/topics/<%=GetCanshu("mac") %>"/></label>
        <input type="submit" class="btn btn-success" value="https://bbs.csdn.net/topics/搜索" />
    </form>
    <table>
        <tr>
                <td>
                    用戶ID
                </td>
                <td>
                    登錄Mac
                </td>
                <td>
                    登錄時間
                </td>
                <td>
                    離開時間
                </td>
                <td>
                    登錄IP
                </td>
                <td></td>
        </tr>
        <asp:Repeater ID="rpt" runat="server">
            <ItemTemplate>
                <td>
                    <a href="https://bbs.csdn.net/topics/LoginRecord.aspx?uid=<%#Eval("userid") %>"><%#Eval("userid") %></a>
                </td>
                <td>
                    <a href="https://bbs.csdn.net/topics/LoginRecord.aspx?mac=<%#Eval("LogonMAC") %>"><%#Eval("LogonMAC") %></a>
                </td>
                <td>
                    <%#Eval("LogonTime") %>
                </td>
                <td>
                    <%#Eval("LogonOutTime") %>
                </td>
                <td>
                    <%#Eval("LogonIP") %>
                </td>
                <td>
                   <a onclick="top.OpenWinMin('LoginMacRecord.aspx','Mac匯總')">Mac匯總</a>
                </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>
    <%=strPage %>//這是后臺直接生成的分頁代碼
</body>
</html>

最后的效果如下:

如果是其他需求,封裝出的代碼又不一樣
受教了,謝謝

uj5u.com熱心網友回復:

學習了 感謝各位

uj5u.com熱心網友回復:

學而不思則罔,思而不學則殆;迷惘了,肯定是思考的多踐行的少造成的;說實話,你的問題我壓根也沒看明白

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/149749.html

標籤:ASP.NET

上一篇:哪位大神能告訴我這個問題如何解決啊

下一篇:C#呼叫第三方DLL 嘗試讀取或寫入受保護的記憶體、Access violation at address 09303B19. Write of address

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more