解读26个ASP.Net开发新手的常见问题(2)_.Net教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:浅析ASp.Net自定义验证码控件
最近自己写了一个自定义验证码控件把它拿出来和大家分享分享 具体步骤 1---》新建asp.net 网站 2---》添加新建项目 ,选择类库 3---》新建两个类 3.1--》自定义控件类(WebC

以下为引用的内容:

if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onclick","this.style.backgroundColor='#99cc00';
this.style.color='buttontext';this.style.cursor='default';");
}

写在DataGrid的_ItemDataBound里

if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onmouseover","this.style.backgroundColor='#99cc00';
this.style.color='buttontext';this.style.cursor='default';");
e.Item.Attributes.Add("onmouseout","this.style.backgroundColor='';this.style.color='';");
}

8.关于日期格式

以下为引用的内容:

  日期格式设定

DataFormatString="{0:yyyy-MM-dd}"

  我觉得应该在itembound事件中

e.items.cell["你的列"].text=DateTime.Parse(e.items.cell["你的列"].text.ToString("yyyy-MM-dd"))

9.获取错误信息并到指定页面

以下为引用的内容:

  不要使用Response.Redirect,而应该使用Server.Transfer

  e.g

// in global.asax
protected void Application_Error(Object sender, EventArgs e) {
if (Server.GetLastError() is HttpUnhandledException)
Server.Transfer("MyErrorPage.aspx");

//其余的非HttpUnhandledException异常交给ASP.NET自己处理就okay了 :)
}

  Redirect会导致post-back的产生从而丢失了错误信息,所以页面导向应该直接在服务器端执行,这样就可以在错误处理页面得到出错信息并进行相应的处理

10.清空Cookie

以下为引用的内容:

Cookie.Expires=[DateTime];
Response.Cookies("UserName").Expires = 0

11.自定义异常处理

以下为引用的内容:

//自定义异常处理类
using System;
using System.Diagnostics;

namespace MyAppException
{
/// 〈summary>
/// 从系统异常类ApplicationException继承的应用程序异常处理类。
/// 自动将异常内容记录到Windows NT/2000的应用程序日志
/// 〈/summary>
public class AppException:System.ApplicationException
{
public AppException()
{
if (ApplicationConfiguration.EventLogEnabled)
LogEvent("出现一个未知错误。");
}

public AppException(string message)
{
LogEvent(message);
}

public AppException(string message,Exception innerException)
{
LogEvent(message);
if (innerException != null)
{
LogEvent(innerException.Message);
}
}

//日志记录类
using System;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading;

namespace MyEventLog
{
/// 〈summary>
/// 事件日志记录类,提供事件日志记录支持
/// 〈remarks>
/// 定义了4个日志记录方法 (error, warning, info, trace)
/// 〈/remarks>
/// 〈/summary>
public class ApplicationLog
{
/// 〈summary>
/// 将错误信息记录到Win2000/NT事件日志中
/// 〈param name="message">需要记录的文本信息〈/param>
/// 〈/summary>
public static void WriteError(String message)
{

WriteLog(TraceLevel.Error, message);
}

/// 〈summary>
/// 将警告信息记录到Win2000/NT事件日志中
/// 〈param name="message">需要记录的文本信息〈/param>
/// 〈/summary>
public static void WriteWarning(String message)
{

WriteLog(TraceLevel.Warning, message);
}

/// 〈summary>
/// 将提示信息记录到Win2000/NT事件日志中
/// 〈param name="message">需要记录的文本信息〈/param>
/// 〈/summary>
public static void WriteInfo(String message)
{
WriteLog(TraceLevel.Info, message);
}
/// 〈summary>
/// 将跟踪信息记录到Win2000/NT事件日志中
/// 〈param name="message">需要记录的文本信息〈/param>
/// 〈/summary>
public static void WriteTrace(String message)
{

WriteLog(TraceLevel.Verbose, message);
}

/// 〈summary>
/// 格式化记录到事件日志的文本信息格式
/// 〈param name="ex">需要格式化的异常对象〈/param>
/// 〈param name="catchInfo">异常信息标题字符串.〈/param>
/// 〈retvalue>
/// 〈para>格式后的异常信息字符串,包括异常内容和跟踪堆栈.〈/para>
/// 〈/retvalue>
/// 〈/summary>
public static String FormatException(Exception ex, String catchInfo)
{
StringBuilder strBuilder = new StringBuilder();
if (catchInfo != String.Empty)
{
strBuilder.Append(catchInfo).Append("\r\n");
}
strBuilder.Append(ex.Message).Append("\r\n").Append(ex.StackTrace);
return strBuilder.ToString();
}

/// 〈summary>
/// 实际事件日志写入方法
/// 〈param name="level">要记录信息的级别(error,warning,info,trace).〈/param>
/// 〈param name="messageText">要记录的文本.〈/param>
/// 〈/summary>
private static void WriteLog(TraceLevel level, String messageText)
{

try
{
EventLogEntryType LogEntryType;
switch (level)
{
case TraceLevel.Error:
LogEntryType = EventLogEntryType.Error;
break;
case TraceLevel.Warning:
LogEntryType = EventLogEntryType.Warning;
break;
case TraceLevel.Info:
LogEntryType = EventLogEntryType.Information;
break;
case TraceLevel.Verbose:
LogEntryType = EventLogEntryType.SuccessAudit;
break;
default:
LogEntryType = EventLogEntryType.SuccessAudit;
break;
}

EventLog eventLog = new EventLog("Application", ApplicationConfiguration.EventLogMachineName, ApplicationConfiguration.EventLogSourceName );
//写入事件日志
eventLog.WriteEntry(messageText, LogEntryType);

}
catch {} //忽略任何异常
}
} //class ApplicationLog
}

12.Panel 横向滚动,纵向自动扩展

〈asp:panel style="overflow-x:scroll;overflow-y:auto;">〈/asp:panel>

13.回车转换成Tab

分享:解读ASP.NET网站程序防SQL注入式攻击方法
一、什么是SQL注入式攻击? 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来

来源:模板无忧//所属分类:.Net教程/更新时间:2009-09-01
相关.Net教程