關於.net實現網站模板機制(非標籤替換)
到很多.net的程式實現模板都是使用標籤替換,和ASP PHP等沒有區別,如dxbbs等.
但是,大家都知道,在.net中,一個頁面是由幾個部分類組成:xxx.aspx.cs,xxx.cs,xxx.desinger.cs.
那麼,我們就可以把一個aspx檔案當著模板,使用urlrewriter與反射來實現模板更換.如:一個列表頁裡面規定必須有一個id叫做rpt的repeater控制元件,模板在製作時就加上這個控制元件.而內容頁的話,可以使用反射,把資料庫實體物件直接繫結到頁面控制元件,方法如下:
///
/// 將控制元件繫結到物件
///
/// 物件
/// 控制元件容器
public static void BindControlsToObject(object obj, Control container)
{
if (obj != null)
{
PropertyInfo[] properties = obj.GetType().GetProperties();
foreach (PropertyInfo info in properties)
{
try
{
Control control = container.FindControl(info.Name);
if (control != null)
{
if (control is ListControl)
{
ListControl control2 = (ListControl)control;
if (control2.SelectedItem != null)
{
info.SetValue(obj, Convert.ChangeType(control2.SelectedItem.Value, info.PropertyType), null);
}
}
else if (control is CheckBox)
{
CheckBox box = (CheckBox)control;
info.SetValue(obj, Convert.ChangeType(box.Checked, info.PropertyType), null);
}
else
{
PropertyInfo[] controlPropertiesArray = control.GetType().GetProperties();
bool flag = false;
flag = FindAndGetControlProperty(obj, info, control, controlPropertiesArray, "Checked", typeof(bool));
if (!flag)
{
flag = FindAndGetControlProperty(obj, info, control, controlPropertiesArray, "Text", typeof(string));
}
if (!flag)
{
flag = FindAndGetControlProperty(obj, info, control, controlPropertiesArray, "Value", typeof(string));
}
if (!flag)
{
flag = FindAndGetControlProperty(obj, info, control, controlPropertiesArray, "SelectedDate", typeof(DateTime));
}
}
}
}
catch
{
}
}
}
}
/// 將控制元件繫結到物件
///
/// 物件
/// 控制元件容器
public static void BindControlsToObject(object obj, Control container)
{
if (obj != null)
{
PropertyInfo[] properties = obj.GetType().GetProperties();
foreach (PropertyInfo info in properties)
{
try
{
Control control = container.FindControl(info.Name);
if (control != null)
{
if (control is ListControl)
{
ListControl control2 = (ListControl)control;
if (control2.SelectedItem != null)
{
info.SetValue(obj, Convert.ChangeType(control2.SelectedItem.Value, info.PropertyType), null);
}
}
else if (control is CheckBox)
{
CheckBox box = (CheckBox)control;
info.SetValue(obj, Convert.ChangeType(box.Checked, info.PropertyType), null);
}
else
{
PropertyInfo[] controlPropertiesArray = control.GetType().GetProperties();
bool flag = false;
flag = FindAndGetControlProperty(obj, info, control, controlPropertiesArray, "Checked", typeof(bool));
if (!flag)
{
flag = FindAndGetControlProperty(obj, info, control, controlPropertiesArray, "Text", typeof(string));
}
if (!flag)
{
flag = FindAndGetControlProperty(obj, info, control, controlPropertiesArray, "Value", typeof(string));
}
if (!flag)
{
flag = FindAndGetControlProperty(obj, info, control, controlPropertiesArray, "SelectedDate", typeof(DateTime));
}
}
}
}
catch
{
}
}
}
}
同時,使用URLREWRITER,不同的模板時指向不同的ASPX頁面,ASPX頁面的PAGE節的Inherits當然要寫好.有點像微軟的MVC的那種模式.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-536618/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 實現最簡單的模板替換
- HTML 替換元素與非替換元素HTML
- PHP 實現自動新增或者替換 內容的IMG標籤的 alt title 屬性PHP
- Stata-將變數名稱替換成標籤變數
- 非易失性WAL BUFFER實現機制解析:日誌源切換
- 公司網站連結錯誤?公司網站域名替換網站
- 網站圖修改後怎麼替換網站
- 怎麼替換公司網站圖片網站
- 請問怎麼替換公司網站網站
- C++基於模板實現智慧指標C++指標
- 網站標頭的修改,如何修改網站的標題和元標籤網站
- 怎樣替換公司網站?網站後臺密碼修改網站密碼
- javascript的簡單模板替換JavaScript
- 利用標籤完善你的網站網站
- 公司網站怎樣替換內容呢網站
- 網站程式碼修改替換流程圖,輕鬆掌握程式碼修改替換流程網站流程圖
- 關於 a 標籤跳轉問題
- JavaScript 模板字面量標籤JavaScript
- django-模板之標籤Django
- 如何快速替換SOLIDWORKS工程圖模板Solid
- 怎麼替換公司網站圖片資訊網站
- 如何替換公司網站的圖片和影片網站
- 請問公司網站怎樣替換內容網站
- 公司網站連結被替換怎麼辦?網站
- 【ASP.NET Core】標記幫助器——替換元素名稱ASP.NET
- cad.net HandOverTo替換物件物件
- Z-BlogPHP 模板檔案與模板標籤PHP
- 關於a標籤target=“_blank"使用rel=noopenerOOP
- Django 模板標籤-第26篇Django
- 網站公司簡介怎麼替換?公司網站首頁圖片修改網站
- 織夢手機網站模板修改,如何在織夢CMS中修改手機網站模板網站
- 非易失性WAL BUFFER實現機制解析:checkpoint改造
- 02 #### Flask模板的語法+模板的渲染(本質:替換)Flask
- 網站模板修改?網站模板咋樣修改?網站
- 關於入侵網站網站
- 關於hexo部落格的note標籤美化Hexo
- 關於語義類標籤的新理解
- 關於a標籤的字型顏色問題
- 關於pycharm無法顯示tag標籤PyCharm