如何control動態綁上事件
星期五, 六月 27, 2008 | 標籤: C# | 0 意見 |在blueshop上看到有人發問..問..C#可否不用手打產生page_event的事件..先說好..我是懶人..所以有些懶招..
..我都是這樣做的..沒打啥字..
..
我都會在page_load裡打上
this.Page.Init += new EventHandler(Page_Init);
在blueshop上看到有人發問..問..C#可否不用手打產生page_event的事件..先說好..我是懶人..所以有些懶招..
..我都是這樣做的..沒打啥字..
..
我都會在page_load裡打上
this.Page.Init += new EventHandler(Page_Init);
SQL Injection這名詞最近很有名..很多大大最近都有談到這東西..
..這問題真的要好好重視一下..想像一下..如果自己幫客戶建的網站..因為自己不小心..然後害企業輕則在頁面被跳出幾段javascript汙辱一下..重則神不之鬼不覺資料乾坤大挪移..到這時候可戶真的會來罵妳xx的肥婆奶奶啦..
..
微軟最近有丟一些工具出來..可以去測試有沒有SQL Injection的問題..
1.Scrawlr
2.Microsoft Source Code Analyzer for SQL Injection
3.URLScan 3.0
我只拿Scrawlr來自己的網站測試一下..感覺像機器人在你網頁爬壓爬..利用一些攻擊的url字串來做人體實驗..
..
真的簡單易用..只要輸入一下網址就行..推薦使用..至少保心安..
..
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
vs2008 or vs2005有一個很好的東東ASP.NET Development Server..可以讓我這種懶人不用裝iis就可以看到我們建置中中的web專案..我想大家應該也常用這功能..因為懶的人因該不只只有我一個ㄅ..
..不過在用這東西時..設定一下可能會更順手..
像我上面這張圖片..就是我自己的設定..這樣設定的好處是..port固定..virtual path也設成根目錄..以後加入我的最愛..測試就行直接測試..另外還有一些js或css的連結..不會有多個資料夾的問題..參考一下ㄅ..不過Development Server好像有些編碼的問題可以參考一下黑暗大大的文章..
..
先看一段簡單的原始碼..
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);
int aaa = db.Products.Where(a => a.ProductID == 9999999).Max(a => (int?)a.ProductID) ?? 0;
Response.Write(aaa);
大家快去載ㄅ..^^..我已經用到愛不釋手了..推推推推..
-----------6/20補-----------
上面這是我看到的下載數..你圖案下去可以連到官方去..數字還一直增加中..厲害阿..
firefox給我的感謝狀..哈..
自high一下..
..
ps:上面國旗怎麼沒有台灣的阿..XD..有就很屌了..^^..
新功能看這今天在測試一段有趣的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 />");
}
}
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 />");
}
}
小舖上有人問..我做個簡單的教學..^^..
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" />
protected void Page_Load(object sender, EventArgs e)
{
//假設抓出來的password
string password = "123456";
//塞到hiddenField
HiddenField1.Value = password;
}
<script type="text/javascript">
//用javascript方法去把它塞到textbox裡
document.getElementById('TextBox1').value = document.getElementById('HiddenField1').value
</script>
今天有遇到一個問題..是處理textbox只能輸入數字型別..這個一般來說大家都會想到javascript onkeypress這事件然後寫程式來處理..可是這onkeypress在firefox有些問題..網路上也有一些javscript的方式以去補那個bug..可是心想..jquery一定也有解決方案..哈..網路上找了一下..整理一下解決方案..
..
<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>
今天遇到了一個怪事..在我連slq時出現的..
無法開啟使用者預設資料庫。登入失敗。 使用者 'XDXDXD\ASPNET' 的登入失敗。
因為在建置網站..所以把mdb檔放在App_Data下..可是今天要讀取時..就跑出這個錯誤..找了goole沒啥解答..幾乎都都是叫你把檔案放在"純正"的sql server下..可是這對來我說很不方便..不可帶著隨處跑..所以苦惱中..
不過最後還是用那大絕招..開新的網站專案..把資料都備份過去..就正常了..一整個..囧oz..
..
這有相關的解決方法..
http://jessewth.blogspot.com/2006/11/vsnet-2005.html
規律生活..很難..
控制自己的時間..也很難..
約束自己..也不簡單..
挑戰自己..控制自己..抓住自己..
自己才是自己的最大敵人..
不知大家有沒有再用menu這control..最近有"功課"所以就接觸到這東東..發現..真的有點給他難用..XD..不過話說回來..又懶的去找別的control就拿起來給他用下去..先說幾個問題好了..不知有用過menu control的客官們..有沒有發現這個問題..就是如果有背景的情況下..在ie下看都會多出一個1px的線..一﹏一||..在firefox下就不會..有圖有真相..請看圖..
上面這張我背景是紅色的..他就給我這樣跑出來..一﹏一||..很機車..
解決方法:
我google找半天..沒有找到..不知是沒人用還是大家已經放棄它..沒啥跟他有相關的文章..耗了半天..直接去看原始碼找fu..發現一個東東..
<a href="#Menu1_SkipLink"><img alt="略過巡覽連結"
src="/my3.5Extensions/WebResource.axd?d=G06Upaja6_hvLTO69AaDgA2&t=633318514006093750"
width="0" height="0" style="border-width:0px;" /></a>
.xxx a { background: transparent; }
今天到我公司..準備上我的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/
有時候我們在使用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>
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();
}
}
這樣就可以抓到trigger的值了..不過注意一下..要給asyncpostbacktrigger的id是uniqueid喔..
..
解決收工..
燒燒燒燒..為了不讓google一整個囂張..台灣Yahoo!奇摩也推出一組"相似"功能的東東..就是
Yahoo!奇摩站長工具..
先看畫面:
目前有四個東西可以玩玩:
統計工具
搜尋工具
搜尋分析管理
廣告工具
試用結果:
統計工具:
跟google的Analytics差不多..只是剛用上去看不到感覺..只是比Analytics好的是..一丟上去就有反應了..不會跟Analytics一樣要等一兩天才跑出結果..
搜尋工具:
我是沒有用google的收尋工具..所以沒得比較..不過有一點的是..在新增收尋到自己的網站時..那編輯搜尋外框..沒有很人性化讓人改成自己網站合適的寬度..例如我需要200px的寬..他沒有..
..不過解決辦法就是直接改原始碼..哈哈..原始碼還是無敵低..
搜尋分析管理:
這我還在等待驗證中..沒有結果可以分享的..(謎之聲:那你寫出來幹麼..
)
廣告工具:
當我準備要試用時..看到"申請限制說明"這東東..裡面的第一條..
建議您的網站流量需為每月至少100萬瀏覽頁次者再來申請,成效為最佳。
忽然心冷的一下..就沒接下去試用了..
..
結論:
yahoo帳號幾乎在台灣人人有一組..不用在申請新的帳號就可以去"直接用"..可以說是很方便的不得了..可喜可賀的是..yahoo也出來跟google拼一下..這樣使用者也多了一種選擇..在良性的互動下..可以猜到的是..以後免費的就越來越多啦..讚低..
..