将ViewState持久化保持在服务器端文件的代码,这样ViewState不占用网络带宽,因此其存取只是服务器的磁盘读取时间。并且它很小,可以说是磁盘随便转一圈就能同时读取好多ViewState,因此可以说“不占时间”。为了再“不占磁盘时间”,我还使用了缓存。
创建一个基类:
public class
BasePage : System.Web.UI.Page
{
protected override object
LoadPageStatefromPersistenceMedium()
{
var viewStateID = (string)((Pair)base.LoadPageStatefromPersistenceMedium()).Second;
var stateStr = (string)Cache[viewStateID];
if (stateStr == null)
{
var fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID);
stateStr = File.ReadAllText(fn);
}
return new ObjectStateFormatter().Deserialize(stateStr);
}
protected override void
SavePageStateToPersistenceMedium(object state)
{
var value = new ObjectStateFormatter().Serialize(state);
var viewStateID = (DateTime.Now.Ticks + (long)this ......
将ViewState持久化保持在服务器端文件的代码,这样ViewState不占用网络带宽,因此其存取只是服务器的磁盘读取时间。并且它很小,可以说是磁盘随便转一圈就能同时读取好多ViewState,因此可以说“不占时间”。为了再“不占磁盘时间”,我还使用了缓存。
创建一个基类:
public class
BasePage : System.Web.UI.Page
{
protected override object
LoadPageStatefromPersistenceMedium()
{
var viewStateID = (string)((Pair)base.LoadPageStatefromPersistenceMedium()).Second;
var stateStr = (string)Cache[viewStateID];
if (stateStr == null)
{
var fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID);
stateStr = File.ReadAllText(fn);
}
return new ObjectStateFormatter().Deserialize(stateStr);
}
protected override void
SavePageStateToPersistenceMedium(object state)
{
var value = new ObjectStateFormatter().Serialize(state);
var viewStateID = (DateTime.Now.Ticks + (long)this ......
using System;
using System.Web;
using System.Text.RegularExpressions;
public static string NoHTML(string Htmlstring)
{
//删除脚本
Htmlstring = Regex.Replace(Htmlstring,@"<script[^>]*?>.*?</script>","",RegexOptions.IgnoreCase);
//删除HTML
Htmlstring = Regex.Replace(Htmlstring,@"<(.[^>]*)>","",RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring,@"([\r\n])[\s]+","",RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring,@"-->","",RegexOptions.IgnoreCase);
Htmlstring = Regex.Replace(Htmlstring,@"<!--.*","",RegexOptions.IgnoreCase);
Htmlstring =   ......
ASP.Net 1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力。当用户试图用之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个 HttpRequestValidationExceptioin。默认情况下会返回如下文字的页面:
以下是引用片段:
Server Error in '/YourApplicationPath' Application
A potentially dangerous Request.Form value was detected from the client
(txtName="<b>").
Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. You can disable request validation by setting validateRequest=false in the Page directive or in the configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case.
Exception Details: System.Web.HttpRequestValidationException: A potentially dangerous Request.Form value was detected from the client (txtName ......
原文地址:http://blog.csdn.net/ChengKing/archive/2009/01/01/3678774.aspx
属性的设计时特性
.NET Framework
为
控件设计时属性提供了很多丰富的类,这些属性的功能非常灵活,控制范围广泛,比如可以控制该属性在属性窗口中的显示模式,如:是否在属性窗口中显示该属
性,也可以指定此属性必须接收值类型描述,按组分类等,也可以控制文本的标记呈现格式等,甚至可以自己定义一个属性类,实现自己想实现的功能。下面讲一下
常用的
.NET Framework
的属性类对控件的支持功能。
Ø
Bindable
指定属性是否可以绑定一个有效数据源,通常使用布尔值进行设置。例如:
Bindable(true)
。如果使用值
true
标记属性,表示该属性可以绑定一个有效数据源
。
Ø
Browsable
指定属性是否应该在属性窗口中显示,使用布尔值设置。一般情况下
,对于
常用的和比较重要的属性设置
Browsable
为
true
,否则
,
设置
Browsable
为
false
。
Ø
EditorBrowsable
设置属性在编辑器中的可见性,比如设置在智能提示列表不显示或高级用户才可以看到该属性。
Ø
Category
指定属性在属性浏览器中 ......
public ActionResult LoadRegionPerformance(TGProject.Models.WModels.TgsOutachiveCondition condition)
{
Account account = (Account)Session["Account"];
var questions = SP.TgsAreaShow(int.Parse(account.AREAID.ToString()));
List<TGProject.Models.WModels.TGSOUTACHIVEAREA> models=new List<TGProject.Models.WModels.TGSOUTACHIVEAREA>();
TGSAREASHOW a;
IEnumerator ie = (System.Collections.IEnumerator)questions.GetEnumerator();
while (ie.MoveNext()) {
a = (TGSAREASHOW)ie.Current;
condition.AREAID = a.AREAID;
List<TGProject.Models.WModels.TGSOUTACHIVEAREA> middlemodels = TGProject.Helpers.SP.TGSOutAchiveArea(condition);
foreach (TGProject.Models.WModels.TGSOUTACHIVEAREA middlemodel in middlemodels)
models.Add(middlemodel);
}
return GetRegionPerformanceModelData(c ......
在ASP.NET网站中网站管理后台需要经常验证用户身份,要实现这种功能就可以利用那个继承机制和ASP.NET的事件机制.首先定义一个需要进行身份验证的BasePage类,继承自Page类,在BasePage类的构造函数中定义它的加载事件的处理代码,这样所有继承自BasePage类的页面都能自动执行身份验证.
/// <summary>
/// 验证登陆类
/// </summary>
public class ValidateLogin : System.Web.UI.Page //继承自System.Web.UI.Page
{
public ValidateLogin()
{
//当页面加载时执行该事件
this.Load += new EventHandler(BasePage_Load);
}
//对登录进行验证
protected void BasePage_Load(object sender,EventArgs e)
{
if (Session["uid"] == "" || Session["uid"] == null)
{
Response.Redirect("~/login.aspx");
}
}
}
public partial class Default : ValidateLogin //继承自ValidateLogin类
{
protected void Page_Load(object sender, EventArgs e)
{
//继承自Vali ......