使用Asp.net mvc + Linq + mvc_scaffold_gen_setup.exe 產生一個完整的家庭帳冊大管家程式 之三

來源:互聯網
上載者:User
[前言]上個月,我提交了兩篇同系列的文章:
使用Asp.net mvc + Linq + mvc_scaffold_gen_setup.exe 產生一個完整的家庭帳冊大管家程式 之一   (簡稱“之一”)
使用Asp.net mvc + Linq + mvc_scaffold_gen_setup.exe 產生一個完整的家庭帳冊大管家程式 之二   (簡稱“之二”)
時隔3個禮拜,終於又可以記錄點滴心得,這個時候往往是最開心的,一種收穫的感覺,不為別的,藉此機會理理思路,給自己找個不玩遊戲的理由……
      這三個禮拜過的很不一般,白天要上班,晚上回來難的有點時間開啟程式寫寫,又不熟悉,進展很慢,資料也少。周末一邊忙著看火箭比賽,一邊抓緊睡懶覺,同學約我出去k歌,還要想好不去的理由。上上周末,部門組織去揚州旅遊,吃了乾絲、獅子頭,揚州炒飯當然也少不了,玩了瘦西湖和何園,很開心,和同事在一起比較放鬆,來斷行符號上大家在一起打牌、玩殺人遊戲,不亦悅乎。與其說是玩,不如說是增進同事之間的感覺吧。可惜的是,大學同宿舍的揚州同學失去聯絡,沒見上一面,在這裡祝他一切順利!對了,記得dudu是揚州人,在揚州的那個夜晚,我還去網吧了,開啟部落格園的時候,還真的想到dudu……
      說到工作,這幾天忙著給項目升級,從.net1.1升級到2.0,很煩很無奈,沒什麼經驗,進度很慢,錯誤很多,改得很辛苦,下次整理一下,我把經驗心得拿出來和大家分享。
      廢話不說了,進入正題。
[本文]
      記得在“之二”文章末尾,我留了三個 問題
之二留下的問題

1)頁面上使用的伺服器端控制項Reapter,在CodeFile中居然必須聲明,否則無法識別,為什麼會這樣?所有伺服器控制項都必須聲明,我之前看的一個例子就沒有,怎麼回事?麻煩各位幫我找找原因。
    [2008.04.17晚回答]在解決方案上右鍵——>Convert to Web Applications就可以把解決方案變成Web Application的形式。這一個Convert其實就是給每個頁面(比如Test.aspx)增加對應的Test.designer.cs的檔案,然後頁面上的控制項的聲明全部放在這裡。其實這個答案應該早就想到,只是太專註於MVC,反而忘了根本的web Application檔案結構。
    2)在修改之前的頁面代碼中的foreach語句,可以使用<%=Html.ActionLink("Edit","Edit",new {id = item.ChildClassID})%>來很方便很直接地放置一個Edit連結,連結地址是ChildClass/Edit/[ChildClassID],
    現在問題是,我使用了Reapter控制項直接綁定資料來源之後,怎樣才可以類似<%=Html.ActionLink("Edit","Edit",new {id = item.ChildClassID})%>這樣的寫法,直接產生一個Edit的連結呢?疑惑在於,在Reapter中無法把[ChildClassID]傳到<%=Html.ActionLink("Edit", "Edit", ……)%>中的"……"中。
    解決方案是:用new {id = Eval("ChildClassID")}來代替其中item.ChildClassID
    3)2008.04.17補充一個問題:顯示ChildClass資訊的時候,由於Model.ChildClassInfo中僅有PrimaryClassID屬性 ,但如果要顯示出PrimaryClassID對應的PrimaryClassName,那該如何??在Model.ChildClassInfo中增加PrimaryClassName屬性??還是在Controllers中進行匹配?補充:這其實是類設計的範疇,和mvc沒多大關係的。

    問題一已經解決,Convert to Web Applications即可。
    問題二已經解決,用new {id = Eval("ChildClassID")} 來代替其中的item.ChildClassID即可
    問題三也已經解決,詳細方法可以參考本文末提供下載的Demo中Model/ClassViewData.cs這個檔案中的代碼,獨立構造用List、New、Edit的複雜實體類。

[功能介紹]
    下面說說本次發布的程式中的功能點:
全部功能(參見“之二”中的“業務介紹”)都可以使用了,支出、收入、借出等都比較好理解。
轉賬是在兩個賬戶之間的金額移動,這個也比較好理解。關於賬戶,之前忘了加上金額這個欄位,這次補上了,可參考本次提供下載的最新的資料庫指令碼,增加了2個欄位。
別的也沒什麼說的,只是自己後來還手動添加了一個Linq運算式,用於分別擷取屬於“收入”的子類和屬於“支出”的子類,因為Linq to classes這個產生的程式碼沒有提供類似功能。
    大家可以注意下Model/ClassViewData.cs中的實體類構成,基本上Edit、List、New等功能都是直接和這幾個實體類關聯,可以說是VO吧,不知道概念有沒有用錯。
    另外,至於程式中的幾個delete操作的做法,我們先不管業務上是否正確合理,暫時為了方便,姑且如此吧。其實我更想加個欄位Isvalid,Delete操作僅僅更改該欄位Isvalid為0,但是,懶得改了...還有,程式中幾乎沒有驗證資料有效性等功能。

[心得總結]
    關於這次的帳冊程式的想法,我先是列出了功能點,然後建庫,但是依然有點缺漏,中間加了兩次欄位,只能說是自己需求沒有整理清楚。每次修改資料庫,是很麻煩也極其不推薦的一件事,特別是像這樣使用Linq to classes的類來產生ORM代碼,還要重新添加一遍dbml檔案。還有,我習慣給每個實體類命名為“[資料庫中的名字]Info”,但是每次產生dbml的時候,Model類都被改變,幸好有VS的重構功能,修改n個地方即可,n等於資料表的個數……
[結束語]
    也不知道再寫些什麼,最近比較犯困,哈欠不斷,不說了,傳上程式和指令碼再說。有問題不明白的可以回複在下面,我儘力回答。希望大家多提點意見,一方面學習下mvc,另一方面也為這個家庭帳冊發展得更好。對了,我打算給它增加“理財計劃”等類似功能。
[資料下載]
最新程式下載:AccountBook0506_newest.rar
最新資料庫指令碼下載:AccountBookDB0506_newest.rar
(便於區別,之二中提供的兩個下載檔案,暫時不刪除。)
[資訊反饋]
    ……

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.