看了dragonpig寫的“教你30秒打造強型別ASP.NET資料繫結”,眼前一亮,真是太給力了,原來還可以這樣進行資料繫結。
立即小試了一下,並進行了一些改進,目前已經應用於Home中的新聞欄目。下面分享一下改進心得。
使用傳統的ASP.NET資料繫結方法,有兩個地方一直讓人不爽:
1) 缺少智能感知;
2) 強制類型轉換。
先回味一下傳統的ASP.NET資料繫結:
看看上面的ToString(),(DateTime)...
dragonpig的強型別綁定思路已經包含瞭解決這兩個問題的方法,但在他展示的代碼中,解決了第一個問題(智能感知),卻忽略了第二個問題(強制類型轉換),原始代碼如下:
protected virtual object ExpHelper<TEntity, TREsult>(Func<TEntity, TREsult> func)
{
var itm = GetDataItem();
return func((TEntity)itm);
}
protected object Stu<TResult>(Func<Student, TResult> func)
{
return ExpHelper<Student, TResult>(func);
}
我在使用中發現還要進行強制類型轉換,有點不爽,研究了一下,原來是object惹的禍,只要把上面代碼中的兩個object改為TResult,問題就解決了。
另外,我把Stu方法名改為了Eval,感覺這樣更友好。
上代碼:
protected virtual TREsult ExpHelper<TEntity, TREsult>(Func<TEntity, TREsult> func)
{
var item = base.GetDataItem();
return func((TEntity)item);
}
protected TResult Eval<TResult>(Func<NewsInfo, TResult> func)
{
return ExpHelper<NewsInfo, TResult>(func);
}
有了“強型別ASP.NET資料繫結”之後的日子真美好...
感謝dragonpig!你的分享太給力了!
看了dragonpig寫的“教你30秒打造強型別ASP.NET資料繫結”,眼前一亮,真是太給力了,原來還可以這樣進行資料繫結。
立即小試了一下,並進行了一些改進,目前已經應用於Home中的新聞欄目。下面分享一下改進心得。
使用傳統的ASP.NET資料繫結方法,有兩個地方一直讓人不爽:
1) 缺少智能感知;
2) 強制類型轉換。
先回味一下傳統的ASP.NET資料繫結:
看看上面的ToString(),(DateTime)...
dragonpig的強型別綁定思路已經包含瞭解決這兩個問題的方法,但在他展示的代碼中,解決了第一個問題(智能感知),卻忽略了第二個問題(強制類型轉換),原始代碼如下:
protected virtual object ExpHelper<TEntity, TREsult>(Func<TEntity, TREsult> func)
{
var itm = GetDataItem();
return func((TEntity)itm);
}
protected object Stu<TResult>(Func<Student, TResult> func)
{
return ExpHelper<Student, TResult>(func);
}
我在使用中發現還要進行強制類型轉換,有點不爽,研究了一下,原來是object惹的禍,只要把上面代碼中的兩個object改為TResult,問題就解決了。
另外,我把Stu方法名改為了Eval,感覺這樣更友好。
上代碼:
protected virtual TREsult ExpHelper<TEntity, TREsult>(Func<TEntity, TREsult> func)
{
var item = base.GetDataItem();
return func((TEntity)item);
}
protected TResult Eval<TResult>(Func<NewsInfo, TResult> func)
{
return ExpHelper<NewsInfo, TResult>(func);
}
有了“強型別ASP.NET資料繫結”之後的日子真美好...
感謝dragonpig!你的分享太給力了!