今天的任务是能够在asp.net下建立文件系统,也就是能够在asp.net的虚拟目录下建立文件夹、文件、修改文件夹、文件、删除文件夹、文件等。建立文件夹、文件很顺利,没有遇到任何问题,直接用Directory静态类就可以做了。
但是,在删除、修改文件夹及文件的时候遇到了奇怪的问题:每次操作以后Session都会被清空,上网一搜,发现是asp.net监控文件系统造成的:一旦asp.net的虚拟目录下有删除或改动文件系统的动作时,asp.net就会重新启动。不仅仅是Session没有了。
网上也有解决方法,就是写到本地Cookies里面,然后下次再读。我个人不是很喜欢用Cookies,除了Login和其它一些需要长时间需要保存的内容,不可能任何数据因为Session要清除就不用Session了。我在SQL Server上写了三个存储过程“userp_select_session_with_username_and_time","userp_insert_session","userp_delete_session_with_username"。
在编写程序的时候,当需要对文件系统进行操作的时候,首先将用户的Session数据存入数据库,然后再对文件系统进行操作,等页面刷新的时候,如果Session中没有元素,就从数据库中查询 ......
一位ASP.net初学者学习过程中整理的备忘录,包括“打开新的窗口并传送参数,为按钮添加对话框,删除表格选定记录,删除表格记录警告”等等常见问题的解决方法(网上看到挺好的,共享一下)。
1. 打开新的窗口并传送参数:
传送参数:
response.write("<script>window.open
('*.aspx?id="+this.DropDownList1.SelectIndex+"&id1="+...+"')</script>")
接收参数:
string a = Request.QueryString("id");
string b = Request.QueryString("id1");
2.为按钮添加对话框
Button1.Attributes.Add("onclick","return confirm('确认?')");
button.attributes.add("onclick","if(confirm('are you sure...?'))
{return true;}else{return false;}")
3.删除表格选定记录
int intEmpID = (int)MyDataGrid.DataKeys[e.Item.ItemIndex];
string deleteCmd = "DELETE from Employee where emp_id = " + intEmpID.ToString()
4.删除表格记录警告
private void DataGrid_ItemCreated(Object sender,DataGridItemEventArgs ......
Cache 即高速缓存 ,我想很多人对他的第一印象一定像我一样,感觉他一定能提高系统得性能和运行速度。的确。Net推出cache的初衷确实是这样的。那么cache是如何提高系统性能与运行速度呢?是不是在任何情况下用cache都能提高性能?是不是cache用的越多就越好呢?我在近期开发的项目中有所体会,写下来当作总结也希望能跟大家一起探讨探讨,有错误的地方希望大家批评指正。
1. Cache 是如何工作的。
l Cache 是分配在服务器上的一个公共的内存片。
所谓公共指的cache只要一创建是任何一个客户端浏览器都可以通过后台代码访问到它,它面向的是所有用户,相对而言session也是服务器上的一段内存,但他面向的是单个用户。它是服务器的一段内存块,也就是说每个cache一经创建就占用了服务器资源的。所以从这点来说我们就可以说:并不是cache越多越好。
l cache 是有时间限制的,超过了服务器设定的过期时间,它就会被服务器回收。
l c.cache 可以存放任何对象
2. ......
1. 跟以前一样做界面,只是注意,把所有需要有多语言界面的文字都用label来做
2. 做完以后,在Solution Explorer里选中这个文件,选Tools->Generate Local Resource
3. 你会发现生成了一个目录,App_LocalResources;这个目录里多了一个resx的文件。比如你的aspx文件是default.aspx,它就会生成一个叫做default.aspx.resx的文件。
4. 打开这个文件看看,原来在label中的那些文字都跑到这里来了
5. 打开原来的aspx文件看看source,会发现源码变了:
<%@ Page Language="VB" MasterPageFile="'/MasterPage.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="Default2" title="Untitled Page" Culture="auto" meta:resourcekey="PageResource1" UICulture="auto" %>
…………
<asp:Localize ID="Localize1" runat="server" meta:resourcekey="Localize1Resource1"></asp:Localize>
*********************************************************************
如果是其他的控件上的文字,基本上也是会自动生成的。比如button和gridview的:
<asp:Button ID="Button1" runat="server" met ......
protected void Page_Load(object sender, EventArgs e)
{
getAllControlValue(this);
}
Hashtable getAllControlValue( object PageOrUserControl )
{
Hashtable rtn = new Hashtable();
foreach (Control ctr in (PageOrUserControl as Page).Controls)
{
getControlValue(ctr, rtn);
}
return rtn;
}
void getControlValue(Control ctrIn,Hashtable ht)
{
&nbs ......
导入EXCEL一般有3种方法
1.通过Excel APIl来导入(缺点,需要安装OFFICE组件,建立对象后,不容易释放,大数据量时读取速度较低)
2.通过OLEDB数据源方式读取
3.通过第三方组件来导入(推荐使用ExcelLibrary)下载地址:http://code.google.com/p/excellibrary/
同样导出EXCEL也有3种方法,和导入类似。
推荐使用第3种方法,速度快,不用装OFFICE组件,具体使用方法可以查看DEMO ......