在做一个小网站的一些心得与遇到的问题总结,为以后方便查阅。
1清除缓存管用的方法,base类。(好像这样比较管用)
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
2int.TryParse的好处
2005中每种类型都提供了TryParse方法,该方法的格式一般为bool TryParse(value,out resultValue)。
value 就是将要转换的数据。resultValue是转换后的值。该方法若成功,resultValue中将是转换后的值,同时方法返回true;若失败,resultValue将是将要转换的类型的默认值,同时方法返回false。
3枚举,添加删除新闻的两个标志
private enum Status { Add, Edit };
private Status status;
4存img的时候最好只存img的名字再用再在外面拼地址得到绝对路径。
这样以后路径有改变不必更新数据库。
GetAbsolutePath("admin/Photos/" + txt_ImgUrl.Value);得到值(他人方法赞~)
5dropdowlist编辑时绑定(easy
6fckeditor
<%@ Register Assembly="FredCK.FCKeditorV2" Namespace="FredCK.FCKeditorV2" TagPrefix="FCKeditorV2" %>
7上传图片显示预览(针对ie7上传不能显示图片问题,增加滤镜)
8得到安全的字符串
9repeater增删改 得到typeid(easy)
10设置可读写的数据库实例
11分页存储过程关键代码。
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
2int.TryParse的好处
private string _zip;
public string Zip
{
get
{
return _zip;
}
set
{
int res;
if (int.TryParse(value, out res))
{
if (res > 99999)
{
throw new ArgumentException("Zip Code Value invalid");
}
else
{
_zip = res.ToString().PadLeft(5, ‘0′);
}
}
else
{
throw new ArgumentException("Zip code must be numeric");
}
}
}
!int.TryParse(this.DropDownList_TypeName.SelectedItem.Value, out TypeId){}public string Zip
{
get
{
return _zip;
}
set
{
int res;
if (int.TryParse(value, out res))
{
if (res > 99999)
{
throw new ArgumentException("Zip Code Value invalid");
}
else
{
_zip = res.ToString().PadLeft(5, ‘0′);
}
}
else
{
throw new ArgumentException("Zip code must be numeric");
}
}
}
2005中每种类型都提供了TryParse方法,该方法的格式一般为bool TryParse(value,out resultValue)。
value 就是将要转换的数据。resultValue是转换后的值。该方法若成功,resultValue中将是转换后的值,同时方法返回true;若失败,resultValue将是将要转换的类型的默认值,同时方法返回false。
3枚举,添加删除新闻的两个标志
private enum Status { Add, Edit };
private Status status;
4存img的时候最好只存img的名字再用再在外面拼地址得到绝对路径。
这样以后路径有改变不必更新数据库。
GetAbsolutePath("admin/Photos/" + txt_ImgUrl.Value);得到值(他人方法赞~)
/// <summary>
/// 将相对路径转换为绝对路径
/// 注:最终得到任何场合都可以正常链接的路径(不论将应用程序设置成虚拟目录还是网站的根目录)
/// 例如:设置为虚拟目录的时候,"admin/upload/test.jpg" => "/JCDWeb/admin/upload/test.jpg"
/// 设置为网站根的时候,"admin/upload/test.jpg" => "/admin/upload/test.jpg"
/// </summary>
/// <param name="path">从根开始的相对路径</param>
/// <returns>绝对路径</returns>
public string GetAbsolutePath(string path)
{
// 如果是一个绝对路径直接返回
if (path.ToLower().StartsWith("http://"))
{
return path;
}
// 去掉前导的 "/"
if (path.StartsWith("/"))
{
path = path.Substring(1);
}
// 整个应用程序的路径
string appPath = "http://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath;
// 得到绝对路径
if (appPath.EndsWith("/"))
return appPath + path;
else
return appPath + "/" + path;
}
/// 将相对路径转换为绝对路径
/// 注:最终得到任何场合都可以正常链接的路径(不论将应用程序设置成虚拟目录还是网站的根目录)
/// 例如:设置为虚拟目录的时候,"admin/upload/test.jpg" => "/JCDWeb/admin/upload/test.jpg"
/// 设置为网站根的时候,"admin/upload/test.jpg" => "/admin/upload/test.jpg"
/// </summary>
/// <param name="path">从根开始的相对路径</param>
/// <returns>绝对路径</returns>
public string GetAbsolutePath(string path)
{
// 如果是一个绝对路径直接返回
if (path.ToLower().StartsWith("http://"))
{
return path;
}
// 去掉前导的 "/"
if (path.StartsWith("/"))
{
path = path.Substring(1);
}
// 整个应用程序的路径
string appPath = "http://" + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath;
// 得到绝对路径
if (appPath.EndsWith("/"))
return appPath + path;
else
return appPath + "/" + path;
}
5dropdowlist编辑时绑定(easy
foreach (ListItem li in DropDownList_TypeName.Items)
{
if (li.Value == dt.Rows[0]["TypeID"].ToString().Trim())
{
li.Selected = true;
break;
}
}
{
if (li.Value == dt.Rows[0]["TypeID"].ToString().Trim())
{
li.Selected = true;
break;
}
}
6fckeditor
<%@ Register Assembly="FredCK.FCKeditorV2" Namespace="FredCK.FCKeditorV2" TagPrefix="FCKeditorV2" %>
7上传图片显示预览(针对ie7上传不能显示图片问题,增加滤镜)
<div id="div_1" class="preview">
<asp:Image ID="img_Photo" runat="server" ImageUrl="../images/noimage.gif"
Width="120px" Height="90px" /></div>
function PreviewInInternetExplorer7(file)
{
if (document.all)
{
$('div_1').filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = file;
$('img_Photo').style.display = "none";
} else
{
$('img_Photo').src = file;
}
}
.preview
{
width:120px;
height:90px;
overflow:hidden;
text-align:center;
border:1px solid #DBDBDB;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
}
<asp:Image ID="img_Photo" runat="server" ImageUrl="../images/noimage.gif"
Width="120px" Height="90px" /></div>
function PreviewInInternetExplorer7(file)
{
if (document.all)
{
$('div_1').filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = file;
$('img_Photo').style.display = "none";
} else
{
$('img_Photo').src = file;
}
}
.preview
{
width:120px;
height:90px;
overflow:hidden;
text-align:center;
border:1px solid #DBDBDB;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale');
}
8得到安全的字符串
public string GetSafeQueryStr(string _name)
{
string str = "";
if (_name != "" && _name != null && Request[_name] != "" && Request[_name] != null)
str = Request[_name].ToString().Trim().Replace("'", "''");
return str;
}
{
string str = "";
if (_name != "" && _name != null && Request[_name] != "" && Request[_name] != null)
str = Request[_name].ToString().Trim().Replace("'", "''");
return str;
}
9repeater增删改 得到typeid(easy)
<asp:LinkButton ID="lbt_delete" CommandArgument=' <%#DataBinder.Eval(Container.DataItem,"ID") %> '
runat="server" CommandName="delete" OnClientClick="return confirm('确定删除吗?')">删除</asp:LinkButton>
一:Label lb = e.Item.FindControl("TypeID") as Label;
int typeId = int.Parse (lb.Text.Trim());
switch (e.CommandName)
二:int Id = Convert.ToInt32(e.CommandArgument);
switch (e.CommandName)
runat="server" CommandName="delete" OnClientClick="return confirm('确定删除吗?')">删除</asp:LinkButton>
一:Label lb = e.Item.FindControl("TypeID") as Label;
int typeId = int.Parse (lb.Text.Trim());
switch (e.CommandName)
二:int Id = Convert.ToInt32(e.CommandArgument);
switch (e.CommandName)
10设置可读写的数据库实例
private static Database reader;
private static Database writer;
private static object lockObj = new object();
/// <summary>
/// 获得只读数据库实例
/// </summary>
public static Database Reader
{
get
{
if (reader == null)
{
lock (lockObj)
{
if (reader == null)
{
reader = DatabaseFactory.CreateDatabase("Reader");
}
}
}
return reader;
}
}
/// <summary>
/// 获得可写数据库实例
/// </summary>
public static Database Writer
{
get
{
if (writer == null)
{
lock (lockObj)
{
if (writer == null)
{
writer = DatabaseFactory.CreateDatabase("Writer");
}
}
}
return writer;
}
}
lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入一个锁定代码,则它将在释放该对象前一直等待。private static Database writer;
private static object lockObj = new object();
/// <summary>
/// 获得只读数据库实例
/// </summary>
public static Database Reader
{
get
{
if (reader == null)
{
lock (lockObj)
{
if (reader == null)
{
reader = DatabaseFactory.CreateDatabase("Reader");
}
}
}
return reader;
}
}
/// <summary>
/// 获得可写数据库实例
/// </summary>
public static Database Writer
{
get
{
if (writer == null)
{
lock (lockObj)
{
if (writer == null)
{
writer = DatabaseFactory.CreateDatabase("Writer");
}
}
}
return writer;
}
}
11分页存储过程关键代码。
IF @curpage = 0
SET @cmd = 'SELECT TOP '+cast(@page_record AS NVARCHAR)+' '+@fieldlist+'
FROM '+@tablename+' WHERE '+@where+' '+@orderby
ELSE
SET @cmd = 'SELECT TOP '+cast(@page_record AS NVARCHAR)+' '+@fieldlist+'
FROM '+@tablename+' WHERE '+@where+' AND '+@tablefield+'
'+@op+' (SELECT '+@max_min+'('+@tablefield+') FROM (SELECT TOP
'+cast(@uprecord AS NVARCHAR)+' '+@tablefield+' FROM '+@tablename+' WHERE
'+@where+' '+@orderby+') AS TmpTbl ) AND '+@where+' '+@orderby
SET @cmd = 'SELECT TOP '+cast(@page_record AS NVARCHAR)+' '+@fieldlist+'
FROM '+@tablename+' WHERE '+@where+' '+@orderby
ELSE
SET @cmd = 'SELECT TOP '+cast(@page_record AS NVARCHAR)+' '+@fieldlist+'
FROM '+@tablename+' WHERE '+@where+' AND '+@tablefield+'
'+@op+' (SELECT '+@max_min+'('+@tablefield+') FROM (SELECT TOP
'+cast(@uprecord AS NVARCHAR)+' '+@tablefield+' FROM '+@tablename+' WHERE
'+@where+' '+@orderby+') AS TmpTbl ) AND '+@where+' '+@orderby