国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

在ASP.NET中實(shí)現(xiàn)MVC模式(二)

2024-07-10 12:57:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在asp.net中實(shí)現(xiàn)model-view-controller模式(二)



mvc模式形容這種實(shí)現(xiàn)方式是一種被動(dòng)的實(shí)現(xiàn)機(jī)制,asp.net充當(dāng)了程序執(zhí)行中的控制器的角色,但程序員必須將具體的事件處理方法添加到事件的響應(yīng)函數(shù)中。如在這個(gè)例子中,控制器在頁(yè)面加載之前調(diào)用page_load函數(shù)并執(zhí)行其中的代碼,當(dāng)用戶(hù)點(diǎn)擊submit按鈕時(shí)由系統(tǒng)調(diào)用submitbtn_click函數(shù)并執(zhí)行。



這種將代碼都包含在一個(gè)文件中的實(shí)現(xiàn)方式非常的直接,而且當(dāng)應(yīng)用程序很小并不經(jīng)常修改的時(shí)候也可以說(shuō)是一種好的方法,但是如果下面的一些情況出現(xiàn)的話(huà)你也許會(huì)開(kāi)始考慮修改這種實(shí)現(xiàn)方法:



使編程的工作并行并減少由此帶來(lái)的發(fā)生錯(cuò)誤的可能性。為了增加工作的并行性,提高效率,你可能想讓不同的人編寫(xiě)視圖的代碼及模型代碼并盡力減少這種工作方式所帶來(lái)的出錯(cuò)的可能性。例如:當(dāng)所有的代碼都在一個(gè)文件中的話(huà),那么一個(gè)編程人員可能會(huì)在改變datagrid顯示格式的時(shí)候無(wú)意中修改數(shù)據(jù)訪(fǎng)問(wèn)的代碼。這種錯(cuò)誤是很難被發(fā)現(xiàn)的,直到頁(yè)面整體被編譯的時(shí)候才會(huì)顯現(xiàn)出來(lái)。。



使你的數(shù)據(jù)訪(fǎng)問(wèn)代碼在其它頁(yè)面中重用。在這種單文件的實(shí)現(xiàn)方式中,除了拷貝代碼,沒(méi)有其它的方法能夠做到代碼的重用。拷貝的代碼是很難被維護(hù)的,因?yàn)橐坏┐a發(fā)生了變化,你必須在所有的頁(yè)面都進(jìn)行修改。



為了避免上面這些情況的發(fā)生,asp.net引入了代碼分離(code-behind)機(jī)制。



用代碼分離機(jī)制進(jìn)行重構(gòu)

microsoft visual studio .net中的代碼分離機(jī)制使視圖層的代碼與模型及控制器的代碼能夠很容易的分離。每個(gè)asp.net頁(yè)面都有一種機(jī)制,能夠使其要調(diào)用的方法在一個(gè)與其分離的類(lèi)中實(shí)現(xiàn)。這種方式使用起來(lái)非常的方便,而且也可以利用visual studio .net中的一些其它特性共同完成開(kāi)發(fā)工作。比如如當(dāng)你利用代碼分離的機(jī)制開(kāi)發(fā)你的頁(yè)面的時(shí)候,可以利用智能感知(intellisense technology)顯示出一個(gè)可用方法的列表方便編程。而智能感知技術(shù)在.aspx頁(yè)面中是不能使用的。



下面給出的是上面例子利用代碼分離機(jī)制的實(shí)現(xiàn)。



視圖部分:



視圖層的代碼現(xiàn)在一個(gè)單獨(dú)的文件中實(shí)現(xiàn)。solution.aspx:



<%@ page language="c#" codebehind="solution.aspx.cs"

autoeventwireup="false" inherits="solution" %>

<html>

<head>

<title>solution</title>

</head>

<body>

<form id="solution" method="post" runat="server">

<h3>recordings</h3>

select a recording:<br/>

<asp:dropdownlist id="recordingselect" runat="server" />

<asp:button id="submit" runat="server" text="submit"

enableviewstate="false" />

<p/>

<asp:datagrid id="mydatagrid" runat="server" width="700"

backcolor="#ccccff" bordercolor="black" showfooter="false"

cellpadding="3" cellspacing="0" font-name="verdana" font-size="8pt"

headerstyle-backcolor="#aaaadd" enableviewstate="false" />

</form>

</body>

</html>

大部分代碼都與前面的解決方案的代碼相同。主要的不同點(diǎn)是第一行:

<%@ page language="c#" codebehind="solution.aspx.cs"

autoeventwireup="false" inherits="solution" %>



這行告訴asp.net執(zhí)行環(huán)境,這個(gè)頁(yè)面的具體實(shí)現(xiàn)機(jī)制在一個(gè)單獨(dú)的類(lèi)中。因?yàn)檫@個(gè)頁(yè)面是獨(dú)立的,因此如果數(shù)據(jù)訪(fǎng)問(wèn)的代碼發(fā)生變化,這個(gè)頁(yè)面并不需要做任何改動(dòng)。同樣,一些設(shè)計(jì)師也可以改變這個(gè)頁(yè)面的代碼而不會(huì)引起任何數(shù)據(jù)訪(fǎng)問(wèn)的錯(cuò)誤。
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 沭阳县| 廊坊市| 神农架林区| 独山县| 东阳市| 镇平县| 临清市| 楚雄市| 陈巴尔虎旗| 民权县| 开化县| 和静县| 商河县| 神池县| 临湘市| 漳浦县| 饶河县| 彰武县| 渭南市| 阳春市| 柳林县| 贞丰县| 浑源县| 上饶市| 西充县| 克什克腾旗| 呈贡县| 六盘水市| 温泉县| 通河县| 金溪县| 中牟县| 赣州市| 鄄城县| 磐石市| 万荣县| 宁德市| 油尖旺区| 盖州市| 繁昌县| 循化|