星期五, 6月 27, 2008

如何control動態綁上事件

在blueshop上看到有人發問..問..C#可否不用手打產生page_event的事件..先說好..我是懶人..所以有些懶招..Devil..我都是這樣做的..沒打啥字..Party..

我都會在page_load裡打上

hjkl
然後再按兩次tab鍵..他就很神奇的自己產生出事件了..Kiss..這樣就可以做到要求的懶招..也不會有打錯字的問題..不過記得要去page_load裡把剛剛那段程式碼刪掉..

this.Page.Init += new EventHandler(Page_Init);

因為page在初始化的時候就幫我們定義好了..我們要把我們剛剛產生出來的事件刪掉..這樣才不會重複叫兩次事件了..^^||..完成..其實只要是control的Intellisense有"閃電"都可以用這招來產生事件..只是要記住..其他的control就不用刪掉上面那段程式碼了..不然沒有綁不到了..

星期四, 6月 26, 2008

SQL Injection 測試工具

SQL Injection這名詞最近很有名..很多大大最近都有談到這東西..Open-mouthed..這問題真的要好好重視一下..想像一下..如果自己幫客戶建的網站..因為自己不小心..然後害企業輕則在頁面被跳出幾段javascript汙辱一下..重則神不之鬼不覺資料乾坤大挪移..到這時候可戶真的會來罵妳xx的肥婆奶奶啦..Crying..

微軟最近有丟一些工具出來..可以去測試有沒有SQL Injection的問題..

1.Scrawlr
2.Microsoft Source Code Analyzer for SQL Injection
3.URLScan 3.0

我只拿Scrawlr來自己的網站測試一下..感覺像機器人在你網頁爬壓爬..利用一些攻擊的url字串來做人體實驗..Nerd..

ddc

真的簡單易用..只要輸入一下網址就行..推薦使用..至少保心安..Sleepy..

ps:如果不災啥叫SQL Injection..那..看一下之前黃忠成大大的文章了解一下比較好..

參考:
http://www.misfitgeek.com/Tools+To+Block+And+Eradicate+SQL+Injection.aspx
http://www.cnbeta.com/articles/58876.htm
http://www.communities.hp.com/securitysoftware/blogs/spilabs/archive/2008/06/23/finding-sql-injection-with-scrawlr.aspx

星期三, 6月 25, 2008

ASP.NET Development Server設定

vs2008 or vs2005有一個很好的東東ASP.NET Development Server..可以讓我這種懶人不用裝iis就可以看到我們建置中中的web專案..我想大家應該也常用這功能..因為懶的人因該不只只有我一個ㄅ..Blushing..不過在用這東西時..設定一下可能會更順手..

image

像我上面這張圖片..就是我自己的設定..這樣設定的好處是..port固定..virtual path也設成根目錄..以後加入我的最愛..測試就行直接測試..另外還有一些js或css的連結..不會有多個資料夾的問題..參考一下ㄅ..不過Development Server好像有些編碼的問題可以參考一下黑暗大大的文章..Drooling..

參考:
http://weblogs.asp.net/scottgu/archive/2006/12/19/tip-trick-how-to-run-a-root-site-with-the-local-web-server-using-vs-2005-sp1.aspx

星期一, 6月 23, 2008

取消webservice的documentation

在應用webservice時..直接連網址就可以看到documentation這個文件..就是下面這個..

ddv

有時webservice就只有自己內部人用..不想讓外面的人看到這個測試文件..解決方法就是關掉它..在webconfig裡..加入這段..

<system.web>
<webServices>
<protocols>
<remove name="Documentation"/>
</protocols>
</webServices>
</system.web>

就可以成功解決了..^^..

星期四, 6月 19, 2008

4444真有緣..XD

運氣真好..剛剛看到我的計數器..

ggfg

.....

我好像對4這數字很有緣..

小時候打棒球..老是被4死球..

看時間都是44分..常在4:44分就會喵到..

本來我以為這都是我的幻覺..沒想到..

計數器又來一次..阿們..這是迷信這是迷信..

Linq to SQL使用sum,mix,min指令遇到empty table

先看一段簡單的原始碼..

int aaa = db.Products.Where(a => a.ProductID == 9999999).Max(a => a.ProductID);
Response.Write(aaa);

會跑出這錯誤..

The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type.

這個問題..就是如果用sum,mix,min的時候..如果資料庫傳回來是empty table那會傳回上面那行錯誤..這要怎麼解決ㄋ..google一下..如果我們把程式碼改成..

int? aaa = db.Products.Where(a => a.ProductID == 9999999).Max(a => (int?)a.ProductID);
Response.Write(aaa.HasValue ? aaa.Value : 0);

這樣就可以解決了..Big Grin..不過我是比較懶..我都是這樣寫..

int aaa = db.Products.Where(a => a.ProductID == 9999999).Max(a => (int?)a.ProductID) ?? 0;
Response.Write(aaa);

這樣快多了..^^||..參考一下ㄅ..

參考:

星期三, 6月 18, 2008

Firefox 3: 不會不上手,會讓您愛不釋手

type06-3

大家快去載ㄅ..^^..我已經用到愛不釋手了..推推推推..

-----------6/20補-----------

456

上面這是我看到的下載數..你圖案下去可以連到官方去..數字還一直增加中..厲害阿..

firefox給我的感謝狀..哈..

789

自high一下..Big Grin..

ps:上面國旗怎麼沒有台灣的阿..XD..有就很屌了..^^..

新功能看這

星期二, 6月 17, 2008

linq注意撰寫方式

今天在測試一段有趣的linq程式..發現linq的寫法真的要注意點..不然真的會照成效能的影響..大家因該都知道linq他的statement並不會馬上執行..如果不知道可以看我之前的文章Linq 執行時間..接下來我們比較一下下面這兩段的程式碼..

效能差的原始碼..這只是去資料庫抓出兩個table去比較

da.linqToSqlDataContext db = new da.linqToSqlDataContext();

var a1 = from a in db.Products
select a;

var b1 = from b in db.Order_Details
select b;

foreach (var b in b1)
{
var cccc = from c in a1
where c.ProductID == b.ProductID
select c;
foreach (var c in cccc)
{
Response.Write(c.ProductName + "<br />");
}
}

這一段執行效能很差..因為會一直去sql抓取資料..你一看執行的sql就知道露露長..有圖有真相..我只擷取一段..因為很長..XD..

ddfdf

改善後的原始碼

da.linqToSqlDataContext db = new da.linqToSqlDataContext();

var a1 = (from a in db.Products
select a).ToList();

var b1 = (from b in db.Order_Details
select b).ToList();

foreach (var b in b1)
{
var cccc = from c in a1
where c.ProductID == b.ProductID
select c;
foreach (var c in cccc)
{
Response.Write(c.ProductName + "<br />");
}
}

這樣就好多了..有圖有真相..Surprise..裡面就兩段sql..就解決了..剩下的就在記憶體中處理..當然快多啦..

ddfsd
結論是..linq執行時間要搞清處阿..如果不確定..學我笨笨的去看就好啦..XD..
還有..當然可以把他們倆join起來..我只是做個測試..Clown..

密碼顯示在TextBox的TextMode中

小舖上有人問..我做個簡單的教學..^^..

1.先在aspx網頁上放下這幾個control

<asp:TextBox ID="TextBox1" runat="server" TextMode="Password"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
<asp:HiddenField ID="HiddenField1" runat="server" />

2.在cs裡抓取資料..這是模擬抓資料

protected void Page_Load(object sender, EventArgs e)
{
//假設抓出來的password
string password = "123456";
//塞到hiddenField
HiddenField1.Value = password;
}

3.寫javascript去塞值

<script type="text/javascript">
//用javascript方法去把它塞到textbox裡
document.getElementById('TextBox1').value = document.getElementById('HiddenField1').value
</script>

成功..達成效果..不過要注意ㄟ..這樣密碼都被知道了..Day dreamingSleepySilly..

星期五, 6月 13, 2008

我的電腦發燒了

怎辦..好燙喔..它發燒了..><||..要去敗風散ㄇ..剛剛給我自動關機ㄟ...Confused..Crying..

kli

星期四, 6月 12, 2008

jquery 限制輸入數字

今天有遇到一個問題..是處理textbox只能輸入數字型別..這個一般來說大家都會想到javascript onkeypress這事件然後寫程式來處理..可是這onkeypress在firefox有些問題..網路上也有一些javscript的方式以去補那個bug..可是心想..jquery一定也有解決方案..哈..網路上找了一下..整理一下解決方案..Open-mouthed..

<div>
<input type="text" name="quantity" id="quantity" />
</div>
</form>

<script type="text/javascript">
$('#quantity').keypress(function (e){
if((e.shiftKey && e.keyCode == 45) || e.which!=8 &&
e.which!=0 && (e.which<48 || e.which>57))
{
return false;
}
});
</script>

這樣就可以指定輸入只能數字了..^^..方便ㄅ..
不過還是有bug的..就是..用複製貼上..還是掛..後端還是要驗證阿..Wilted Rose..

如果爛惰的人..可以到這直接下在套件..人家用好的..
http://www.cnblogs.com/wzmaodong/archive/2008/02/27/1084207.html
上面有完整的教學..教你怎麼用..安心服用ㄅ..

這裡有jquery事件參數..參考一下ㄅ
http://docs.jquery.com/Types/Event

--2008/07/05補--
我找到更好的東西啦..屌..翻了..幾乎可以限制你想要的..XD..
http://plugins.jquery.com/project/aphanumeric

登入內建的App_Data失敗

今天遇到了一個怪事..在我連slq時出現的..

無法開啟使用者預設資料庫。登入失敗。 使用者 'XDXDXD\ASPNET' 的登入失敗。

因為在建置網站..所以把mdb檔放在App_Data下..可是今天要讀取時..就跑出這個錯誤..找了goole沒啥解答..幾乎都都是叫你把檔案放在"純正"的sql server下..可是這對來我說很不方便..不可帶著隨處跑..所以苦惱中..

不過最後還是用那大絕招..開新的網站專案..把資料都備份過去..就正常了..一整個..囧oz..Skull..

這有相關的解決方法..
http://jessewth.blogspot.com/2006/11/vsnet-2005.html

律..

規律生活..很難..
控制自己的時間..也很難..
約束自己..也不簡單..
挑戰自己..控制自己..抓住自己..
自己才是自己的最大敵人..

星期一, 6月 09, 2008

星期五, 6月 06, 2008

menu control 使用問題

不知大家有沒有再用menu這control..最近有"功課"所以就接觸到這東東..發現..真的有點給他難用..XD..不過話說回來..又懶的去找別的control就拿起來給他用下去..先說幾個問題好了..不知有用過menu control的客官們..有沒有發現這個問題..就是如果有背景的情況下..在ie下看都會多出一個1px的線..一﹏一||..在firefox下就不會..有圖有真相..請看圖..

789

上面這張我背景是紅色的..他就給我這樣跑出來..一﹏一||..很機車..

解決方法:
我google找半天..沒有找到..不知是沒人用還是大家已經放棄它..沒啥跟他有相關的文章..耗了半天..直接去看原始碼找fu..發現一個東東..

<a href="#Menu1_SkipLink"><img alt="略過巡覽連結"
src="/my3.5Extensions/WebResource.axd?d=G06Upaja6_hvLTO69AaDgA2&amp;t=633318514006093750"
width="0" height="0" style="border-width:0px;" /></a>

發現把它去掉..就可以解決問題了..我原本是用javascript去去掉..只是很麻煩..還要寫javascript..所以再跟他耗了一下..找到這屬性SkipLinkText..直接把這設為空值..就解決了..XD..我找好久..

再來還有一個問題..就是HoverStyle這東東..一般來說..如果我們用background單色..都不會有問題..可是一需要用CssClass的background-image: url時..問題就大了..有圖有真相..

1122

它就給我這樣跑出來..一次給兩層..真是OOXX..

解決方法:
發現問題了..因為下面<a>文字</a>的css也繼承上面的..所以..會有兩層..知道這就可以去解決問題了..就是..去除掉a這地方的css就行了..只要加上下面這段就行了
.xxx a { background: transparent; }
.xxx是hover的CssClass..這樣就恢復青春美貌了..Big Grin..

77885

最後還是要complain一下..很多地方不能單獨設定..還是蠻綁手綁腳的..^^..需要javascript去後續處理..痛苦阿..

參考:

斷線小插曲

今天到我公司..準備上我的blog去看一下的時候發現..

Server Not Found

Error 404

心裡忽然冷一下..我dns是不是到期啦..XD..馬上去dns那看一下..沒有到期阿..這時就開始debug大作戰了..tracert一下..疑..不能解析..問一下msn上的朋友..他們可以上..一﹏一||..那問題就是在"區域小範圍啦"..直接殺去找公司內部的dns..看一下設定..ghs.google.com這對應感覺好像不太對..ping一下..XD..對應的ip改了..抓出一隻小蟲..二話不說..改對應的ip..復活啦..哈..

忘了說..我是用google的自訂網域的功能..所以..需要ip去設定..然後我又很機車沒用網域去對應..所以google的解析改了..我就掛了..^^||..如果各位大大有這需要..可參考下面文章ㄟ..

http://chitsaou.wordpress.com/2007/01/06/blogger-custom-domain/

星期三, 6月 04, 2008

解決updatepanel抓不到control

有時候我們在使用updatepanel時..會習慣用ui去選我們要trigger的物件..可是如果ui選不到ㄟ..那要怎麼辦..當然就是產生錯誤畫面..

A control with ID 'LinkButton2' could not be found for the trigger in UpdatePanel 'UpdatePanel1'.

解決辦法..就是用程式去加入..這樣就可以解決了..看下面例子..

這是一個.aspx..他是用masterpage..裡面有兩個contentplaceholder

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="Panel1" runat="server" GroupingText="ContentPlaceHolder1" Width="200px">
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="Server">
<br />
<asp:Panel ID="Panel2" runat="server" GroupingText="ContentPlaceHolder2" Width="200px">
<asp:LinkButton ID="LinkButton2" runat="server">LinkButton1</asp:LinkButton>
</asp:Panel>
</asp:Content>

.cs

public partial class test_updatePanel_Default : System.Web.UI.Page
{
void Page_Init(object sender, EventArgs e)
{
//動態加入trigger
AsyncPostBackTrigger t = new AsyncPostBackTrigger();
UpdatePanel1.Triggers.Add(t);
t.ControlID = LinkButton2.UniqueID;
}

protected void Page_Load(object sender, EventArgs e)
{
//抓出時間
Label1.Text = DateTime.Now.ToString();
}
}

ddf

這樣就可以抓到trigger的值了..不過注意一下..要給asyncpostbacktrigger的id是uniqueid喔..Smile..
解決收工..

參考:
http://forums.asp.net/t/1042891.aspx

Yahoo!奇摩站長工具

燒燒燒燒..為了不讓google一整個囂張..台灣Yahoo!奇摩也推出一組"相似"功能的東東..就是

Yahoo!奇摩站長工具..ApplauseApplauseApplauseApplauseApplauseApplause

先看畫面:

897 

目前有四個東西可以玩玩:

統計工具
搜尋工具
搜尋分析管理
廣告工具

試用結果:

統計工具:
跟google的Analytics差不多..只是剛用上去看不到感覺..只是比Analytics好的是..一丟上去就有反應了..不會跟Analytics一樣要等一兩天才跑出結果..

搜尋工具:
我是沒有用google的收尋工具..所以沒得比較..不過有一點的是..在新增收尋到自己的網站時..那編輯搜尋外框..沒有很人性化讓人改成自己網站合適的寬度..例如我需要200px的寬..他沒有..Doh..不過解決辦法就是直接改原始碼..哈哈..原始碼還是無敵低..

搜尋分析管理:
這我還在等待驗證中..沒有結果可以分享的..(謎之聲:那你寫出來幹麼..Sick)

廣告工具:
當我準備要試用時..看到"申請限制說明"這東東..裡面的第一條..
建議您的網站流量需為每月至少100萬瀏覽頁次者再來申請,成效為最佳。
忽然心冷的一下..就沒接下去試用了..Wilted Rose..

結論:
yahoo帳號幾乎在台灣人人有一組..不用在申請新的帳號就可以去"直接用"..可以說是很方便的不得了..可喜可賀的是..yahoo也出來跟google拼一下..這樣使用者也多了一種選擇..在良性的互動下..可以猜到的是..以後免費的就越來越多啦..讚低..Kiss..