目前日期文章:201111 (13)

瀏覽方式: 標題列表 簡短摘要

ASP.NET Entity Framework是一個Object/Relational Mapping(ORM)的解決方案,可以將用來和客戶溝通用的概念模型(Conceptual Model,又稱Domain Model)與資料庫中的資料表與關聯所構成的儲存模型(Storage Model,又稱Logical Model),進行妥適的對應(Mapping),形成所謂的Entity Data Model。 Entity Data Model是一個以XML為基礎的檔案,附檔名為.EDM。Visual Studio 2010有提供視覺化的designer工具,程式設計師可以先產生EDM檔案,再自動生成資料庫;如果資料庫已事先建立好,亦可以由現有的資料庫來生成EDM檔案。前者即所謂的Model First模式,而後者為Database first。不過,目前ADO.NET Team在CTP已釋出另一種稱為Code First的模式,Code First基本上是一種Model First模式,只是Code First並不需要使用視覺化的designer工具先生成Model,而是直接在程式定義Domain Model,並使用Code First相關的API及基礎類別,當程式執行時由Entity Framework自動判斷底層的資料庫是否存在,以及schema是否一致;如果資料庫不存在,則Entity Framework會自動建立資料庫。 使用Entity Data Model有一個不錯的優點,即當使用的儲存方式(persistence)改變時(如Access換成SQL),只要改變Storage Model及對應(Mapping)即可,不需要修改Conceptual Model。由於Conceptual Model就是應用程式的Domain Model,並且以Object Layer的方式呈現,這代表著儲存方式的改變可以不需要修改程式碼。 不過,如果使用Visual Studio 2010的designer自動生成Entity Data Model,其生成的Conceptual Model與儲存方式仍有相當高的關聯性;因此,自動生成之Conceptual(Domain) Model可以由程式設計師自行定義類別的方式來加以擴展。一般而言,以自行定義類別方式來擴展Conceptual Model都是使用.NET框架所提供的基本型別來定義類別,這也就是所謂的POCO物件(Plain-Old CLR Objects)。需要注意的是,POCO類別的定義有一定的命名慣例(convention over configuration),要繼承的類別以及需實作的介面(interface)也有特別的規定。 另外,Entity SQL或LINQ都可以對Conceptual Model的物件進行查詢。Entity SQL雖然與關聯式資料庫的SQL相似,但Entity SQL有自己的資料型別及函數;而LINQ則是語接內建的語法,可以透過compiler自動轉譯成各種不同的查詢,使用上相對較有彈性。 PS. 基本上LINQ的語法應該可以視為array或collection等類型的資料結構處理命令,其功能主要是提供集合(set)的運算,可降低以循序運算來處理集合運算的寫碼負擔。因此,LINQ並沒有太特殊的地方,將LINQ再細分為LINQ to Object,LINQ [...]


Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

 Web網頁開發上,由於是透過http的協定來傳輸網頁資料,因此常需要藉由http回應的代碼來判定伺服器所回應的狀態,這是佈署網站或找尋發佈的網頁錯誤的根據之一,因此在下一個單元進入正式撰寫程式碼之前,對於開發或上線的網站,有時會出現諸如找不到網頁或是其他的問題,IE瀏覽器成現一片空白或是有其他的狀態碼,這時就要藉以判斷狀況,並且加以找出原因,本機電腦只是開發方便,開發好的程式最終還是要放到主機上,因此,工程技術人員,不能當個出不了本機的工程師,也就是說本機電腦上一切問題都能解,但出了本機電腦,就一切都無法解決了.
常用的回應代碼如下,更詳細的可以自行上網查找

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

最近在佈署專案時遇到了這個問題,為了避免忘記,作個筆記。

 未命名.png  

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

太多toolkit 沒有一一測試過,之後陸續有用到在更新。

目前測試用的版本:AJAX Control Toolkit — September 2011 Release (4.0)

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

屬性 說明
CancelControlID 取消控制項ID
Drag 是否可拖曳(預設false)
DropShadow 是否有陰影(預設false)
OkControlID 確定控制項ID
OnOkScript  觸發"確認"事件(前端)
OnCancelScript  觸發"取消"事件(前端) 
PopupControlID 彈出視窗的控制項ID
PopupDragHandleControlID 可拖曳的控制項ID
TargetControlID 觸發彈出視窗的控制項ID
X 彈出視窗x座標位置(預設置中)
Y 彈出視窗y座標位置(預設置中)
Animations 效果展示(範例只做淡出)
BackgroundCssClass CSS背景處理

 

CSS:

文章標籤

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

介紹使用 Rob Conery - Textmate ,在使用 VS.NET 2010 ,在寫程式的時候,
感覺眼睛舒服了一些,整個VS.NET就是黑色背景,而Code是白色,關鍵字則是亮色,

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

非同步上傳檔案,這在現今許多網站都有這樣的需求,當畫面欄位很多時,且需要上傳較大的檔案時,不希望檔案到最後按下Submit時才開始上傳,這麼一來一瞬間資料量過大,不僅在用量尖峰時刻Server較負荷不了,當時的網路頻寬也容易吃緊,所以為什麼不能夠在使用者還在輸入資料時就在背後上傳檔案呢?於是這一類的解決方案就出現了,其實這個非同部的方式早也不是新的東西了,有第三方的元件可以達成,或有有人使用UploadPanel 配合FileUpload控制向來實作類似的效果。不過現在AJAX Control ToolKit 中提供的AsyncFileUpload 可以讓您輕易的做出這個效果。

 

文章標籤

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

在開發AJAX網頁的時候,頁面上一定要有一個ScriptManager,才能正常運作。

然而在AJAX Control Toolkit裡面,有一個ToolkitScriptManager,這東西主要是繼承ScriptManager來的。

文章標籤

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

還不錯的參考書:编写高质量代码:改善C#程序的157个建议

1.避免將多個類別放在一個文件裡面。

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

善用 jQuery 的 Selector 可以輕鬆的實現常見的全選/全消功能。如下範例

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> new document </title>
<meta http-equiv="Content-Type" content="text/html; charset=big5"/>
<meta name="author" content="Chui-Wen Chiu">

<script type = 『text/javascript' src=』jquery.js'></script>
<script type = 『text/javascript'>
文章標籤

Jimmy 發表在 痞客邦 PIXNET 留言(1) 人氣()

想要抓取動態產生的控制項的值,要利用到識別的 ID 所以在建立控制項的時候就要指定給它,要使用的時候使用父容器的 FindControl 方法找出控制項

protected void Page_Load(object sender, EventArgs e) 
{
    if (IsPostBack) {
         if (   this.ViewState["TextBoxAdded"] != null 
             && (bool)this.ViewState["TextBoxAdded"] == true) 
         {
             AddTextBox();
         }
    }
}

//動態新增控制項
private void AddTextBox() 
{
    PlaceHolder1.Controls.Clear(); //先清除所有子控制項
    TextBox textbox = new TextBox();
    textbox.ID = "DynBox1";//重點是要給他一個ID
    PlaceHolder1.Controls.Add(textbox);
    this.ViewState["TextBoxAdded"] = true;
}

//事件觸發動態新增控制項
protected void Button1_Click(object sender, EventArgs e) 
{
    AddTextBox();
}

//取值出來
protected void Button2_Click(object sender, EventArgs e) 
{
    TextBox tmpbox = PlaceHolder1.FindControl("DynBox1") as TextBox;
    Label1.Text = tmpbox.Text;
}

延伸應用(產生多個TextBox):

Jimmy 發表在 痞客邦 PIXNET 留言(1) 人氣()

由於使用者太習慣輸入完資料時,就按Enter鍵送出。

protected void Page_Load(object sender, EventArgs e)
{
    //註冊JS
    this.txt1.Attributes.Add("onkeypress", "if( event.keyCode == 13 ) {" + this.Page.ClientScript.GetPostBackEventReference(this.btnTest1, "") + "}");
    this.txt2.Attributes.Add("onkeypress", "if( event.keyCode == 13 ) {" + this.Page.ClientScript.GetPostBackEventReference(this.btnTest2, "") + "}");
}

這裡要注意一下,必須把Button的UseSubmitBehavior屬性設定為false,這樣這Button的Type則為button,否則 預設為submit

文章標籤

Jimmy 發表在 痞客邦 PIXNET 留言(0) 人氣()

找更多相關文章與討論