国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于MVC架構(gòu)的報(bào)表填報(bào)模塊快速實(shí)現(xiàn)

2013-12-31 00:00:00蘇圣
科技資訊 2013年17期

摘 要:報(bào)表在企業(yè)信息系統(tǒng)中具有極其重要的作用,隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,傳統(tǒng)C/S模式的企業(yè)信息系統(tǒng)都在向B/S模式遷移,報(bào)表填報(bào)作為信息系統(tǒng)中的一個(gè)重要模塊,在開(kāi)發(fā)過(guò)程中占據(jù)了相當(dāng)大的比重。本文介紹了一種基于A(yíng)SP.NET MVC框架的快速開(kāi)發(fā)報(bào)表填報(bào)的模塊的方案。

關(guān)鍵詞:報(bào)表填報(bào) ASP.NET MVC 模型綁定

中圖分類(lèi)號(hào):TP2 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2013)06(b)-0025-01

報(bào)表填報(bào)模塊的主要開(kāi)發(fā)任務(wù)在于用戶(hù)界面、輸入控制、自動(dòng)計(jì)算以及數(shù)據(jù)持久化的實(shí)現(xiàn),當(dāng)報(bào)表簡(jiǎn)單的時(shí)候,可能不需要太多的代碼就能完成這部分的工作,而在報(bào)表復(fù)雜的時(shí)候,這部分的工作量會(huì)變得相當(dāng)繁重且容易出錯(cuò)。面對(duì)這部分的開(kāi)發(fā)任務(wù)時(shí),開(kāi)發(fā)人員總是希望能夠有一種簡(jiǎn)單的、可靠的方式快速完成這部分的工作。本文基于A(yíng)SP.NET MVC框架,通過(guò)其中的模型綁定技術(shù),實(shí)現(xiàn)了報(bào)表填報(bào)模塊的快速開(kāi)發(fā)。

1 相關(guān)技術(shù)介紹

1.1 ASP.NET MVC框架

ASP.NETMVC是微軟公司提供的以MVC模式為基礎(chǔ)的ASP.NETWeb應(yīng)用程序框架,通過(guò)把項(xiàng)目分成Model、View和Controller,使得復(fù)雜項(xiàng)目更加容易維護(hù),可以方便的控制應(yīng)用程序的行為,適合大型團(tuán)隊(duì)項(xiàng)目開(kāi)發(fā)。

1.2 ASP.NET MVC的模型綁定技術(shù)

ASP.NET MVC模型綁定通過(guò)引入自動(dòng)填充控制器操作參數(shù)的抽象層、處理通常與使用ASP.NET請(qǐng)求數(shù)據(jù)有關(guān)的普通屬性映射和類(lèi)型轉(zhuǎn)換代碼來(lái)簡(jiǎn)化控制器操作。模型綁定的過(guò)程包括2個(gè)步驟:從請(qǐng)求收集值并使用這些值填充模型。這2個(gè)步驟分別由值提供程序和模型綁定程序來(lái)完成,這部分的實(shí)現(xiàn)可以參考ASP.NETMVC的相關(guān)資料,這里就不做闡述了。

2 實(shí)現(xiàn)方案

ASP.NET MVC的項(xiàng)目包括Model、View和Controller,下面我們通過(guò)一個(gè)簡(jiǎn)單的表單逐一介紹這些模塊的實(shí)現(xiàn)。

2.1 Model和數(shù)據(jù)層

在我們進(jìn)行到填報(bào)模塊的開(kāi)發(fā)的時(shí)候,數(shù)據(jù)庫(kù)結(jié)構(gòu)通常都已經(jīng)確定了,我們需要實(shí)現(xiàn)各個(gè)表單對(duì)應(yīng)的實(shí)體和其數(shù)據(jù)訪(fǎng)問(wèn)層,這部分的代碼和數(shù)據(jù)庫(kù)表相對(duì)應(yīng),而且基本相似,可以通過(guò)代碼生成器來(lái)生成。我們使用代碼生成器生成對(duì)應(yīng)的數(shù)據(jù)實(shí)體類(lèi)主要代碼如下:

[EntityProperty(MappingTable="TP1",MappingColumn="iD",PropertyType= OracleType.Number)]

public string iD { get { return this["iD"]; } set { this["iD"] = value; }}

每個(gè)數(shù)據(jù)庫(kù)字段對(duì)應(yīng)一個(gè)實(shí)體類(lèi)的屬性,并用一個(gè)自定義的元數(shù)據(jù)指明這個(gè)字段映射的數(shù)據(jù)庫(kù)表名,字段名稱(chēng),以及其數(shù)據(jù)類(lèi)型。

同時(shí),我們使用代碼生成器生成了該實(shí)體的數(shù)據(jù)庫(kù)操作類(lèi),實(shí)現(xiàn)了對(duì)該表單的基本數(shù)據(jù)庫(kù)操作實(shí)現(xiàn)。

2.2 View和頁(yè)面邏輯實(shí)現(xiàn)

報(bào)表通常都有自己固定的樣式,所以,在實(shí)現(xiàn)用戶(hù)界面之前,我們可以通過(guò)word,excel或者其他工具先把這個(gè)報(bào)表的樣子按照需要做出來(lái),并在其對(duì)應(yīng)的數(shù)據(jù)部分標(biāo)明為數(shù)據(jù)庫(kù)字段,然后通過(guò)另存為、導(dǎo)出之類(lèi)的方式得到包含數(shù)據(jù)庫(kù)字段標(biāo)簽的HTML文檔,再通過(guò)正則表達(dá)式進(jìn)行查找替換,將標(biāo)簽替換為實(shí)體變量,這樣就得到了View的基本代碼,這個(gè)過(guò)程的代碼示例如下:

替換前的Html源碼:

替換后的View代碼:

@Html.TextBoxFor(model=> Model.f1,new{@class="edititem"})

這部分Html代碼的樣式都由設(shè)計(jì)工具生成,我們只替換了數(shù)據(jù)部分的代碼,為每個(gè)字段提供了一個(gè)呈現(xiàn)和一個(gè)文本框輸入。

由于報(bào)表的特殊性,字段之間的值可能使用公式來(lái)計(jì)算獲得,基于JavaScript引擎,我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的公式添加方法,只要在視圖上定義一個(gè)公式數(shù)組即可,如:

var exp=["f1=f2+f3+f6+f7", "f6=f1+f4+f5"]。

當(dāng)用戶(hù)修改對(duì)應(yīng)文本框的值的時(shí)候,頁(yè)面會(huì)自動(dòng)進(jìn)行公示計(jì)算。

2.3 控制器和模型綁定

當(dāng)用戶(hù)訪(fǎng)問(wèn)這個(gè)報(bào)表的時(shí)候,有2種情況,新建一個(gè)報(bào)表進(jìn)行填寫(xiě)或者修改這個(gè)報(bào)表的數(shù)據(jù),對(duì)于這種情況,我們需要提供一個(gè)針對(duì)HttpGET請(qǐng)求的訪(fǎng)問(wèn)控制器,主要代碼如下:

[HttpGet]

public PartialViewResult P1(string id)

{

P1 eo=new P1() { sUnitCode=id };

var dal=new P1DAL();

eo=dal.GetEntity(id) as P1;

return PartialView(eo);

}

同時(shí)我們需要提供一個(gè)處理HttpPost的訪(fǎng)問(wèn)控制器以處理用戶(hù)新建或者修改報(bào)表后的回發(fā),主要代碼如下:

[HttpPost]

public ActionResult P1(P1 model)

{

var bll=new P1Bll();

bll.UpdateAdd(model);

return RedirectToAction("P1",new{id=model.sUnitCode });

}

這個(gè)控制器僅用一行代碼就完成了數(shù)據(jù)庫(kù)操作,實(shí)現(xiàn)這個(gè)神奇過(guò)程的關(guān)鍵正是ASP.NETMVC的模型綁定技術(shù)。

3 結(jié)語(yǔ)

通過(guò)上面的示例,我們實(shí)現(xiàn)了一個(gè)簡(jiǎn)單報(bào)表填報(bào)頁(yè)面的搭建,整個(gè)過(guò)程需要書(shū)寫(xiě)的關(guān)鍵代碼大概有10來(lái)行,在報(bào)表的字段非常多的時(shí)候,使用本方案可以大幅的減少開(kāi)發(fā)時(shí)間,提高效率。

參考文獻(xiàn)

[1] 李金方.Web報(bào)表系統(tǒng)的研究與實(shí)現(xiàn)[D].北京交通大學(xué),2009.

[2] 宋建松.基于ole技術(shù)調(diào)用EXCEL實(shí)現(xiàn)復(fù)雜報(bào)表生成[J].內(nèi)蒙古電大學(xué)刊,2006(10).

[3] 盧俊瑋,常琳,陳昀錕.MVC模式與ASP.NET MVC框架的技術(shù)研究[J].電腦知識(shí)與技術(shù),2010,6(19).

和田市| 汾阳市| 许昌市| 樟树市| 嘉义县| 博罗县| 玉山县| 武邑县| 福清市| 泾阳县| 涞源县| 怀远县| 远安县| 施秉县| 昌黎县| 乌兰察布市| 上林县| 留坝县| 邻水| 固始县| 沛县| 股票| 南溪县| 金堂县| 胶南市| 潞城市| 墨脱县| 封丘县| 抚松县| 云龙县| 武清区| 京山县| 新乐市| 婺源县| 西充县| 裕民县| 丹阳市| 北票市| 芜湖县| 哈尔滨市| 福建省|