關於.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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- thymeleaf模板實現html5標籤的非嚴格檢查HTML
- 實現最簡單的模板替換
- css3實現手機效果的“切換標籤”CSSS3
- HTML 替換元素與非替換元素HTML
- 使用bringToFont實現標籤切換
- PHP 實現自動新增或者替換 內容的IMG標籤的 alt title 屬性PHP
- Stata-將變數名稱替換成標籤變數
- NET Core-TagHelper實現分頁標籤
- 非易失性WAL BUFFER實現機制解析:日誌源切換
- 公司網站連結錯誤?公司網站域名替換網站
- HTML 關於標籤,虛線HTML
- 關於自定義標籤庫
- 怎麼替換公司網站圖片網站
- 請問怎麼替換公司網站網站
- 網站圖修改後怎麼替換網站
- C++基於模板實現智慧指標C++指標
- javascript實現拖拽並替換網頁塊元素JavaScript網頁
- ASP.NET:MVC模板化機制ASP.NETMVC
- 利用標籤完善你的網站網站
- javascript的簡單模板替換JavaScript
- 怎樣替換公司網站?網站後臺密碼修改網站密碼
- django-模板之標籤Django
- JavaScript 模板字面量標籤JavaScript
- 怎麼替換公司網站圖片資訊網站
- 公司網站怎樣替換內容呢網站
- 關於 a 標籤跳轉問題
- Android UI 開發之實現底部切換標籤AndroidUI
- 『非1~2^n的互換機制』(上)
- 『非1~2^n的互換機制』(中)
- 『非1~2^n的互換機制』(下)
- Django 模板標籤-第26篇Django
- 公司網站連結被替換怎麼辦?網站
- 如何替換公司網站的圖片和影片網站
- 請問公司網站怎樣替換內容網站
- 如何實現pre標籤中的內容自動換行
- 關於a標籤target=“_blank"使用rel=noopenerOOP
- 關於Struts的logic:iterator標籤
- 織夢手機網站模板修改,如何在織夢CMS中修改手機網站模板網站