继承"基类"跟继承"接口"都能实现某些相同的功能,但有些接口能够完成的功能是只用基类无法实现的
1.接口用于描述一组类的公共方法/公共属性. 它不实现任何的方法或属性,只是告诉继承它的类
《至少》要实现哪些功能,继承它的类可以增加自己的方法.
2.使用接口可以使继承它的类: 命名统一/规范,易于维护.比如: 两个类 "狗"和"猫",如果它
们都继承了接口"动物",其中动物里面有个方法Behavior(),那么狗和猫必须得实现Behavior()方法,
并且都命名为Behavior这样就不会出现命名太杂乱的现象.如果命名不是Behavior(),接口会约束
即不按接口约束命名编译不会通过.
3.提供永远的接口。 当类增加时,现有接口方法能够满足继承类中的大多数方法,没必要
重新给新类设计一组方法,也节省了代码,提高了开发效率.
举个代码示例:
//公共接口: "动物"
public Interface IAnimal
{
int EyeNumber;
private void Behavior(); //行为方法,描述各种动物的特性
}
//类: 狗
public Dog : IAnimal
{
string ActiveTime = "白天";
private void Behavior()
{ {
Console.Write("我晚上睡觉,白天活动");
}
}
//类: 猫
public Cat: IAnimal
{
string ActiveTime ......
1. Get(即使用QueryString显式传递)
方式:在url后面跟参数。
特点:简单、方便。
缺点:字符串长度最长为255个字符;数据泄漏在url中。
适用数据:简单、少量、关键的数据。
适用范围:传递给自己、传递给另一个目标页面;常用于2个页面间传递数据。
用法:例如:url后加?UserID=…,跳转到目标页面,目标页面在伺服端可用Request.QueryString["InputText"]获取其指定参数值。
http://www.itokit.com
2. Post
方式:通用的方式。利用form提交。
特点:最常用的方法。常用技巧是把隐秘的数据存在隐藏域中由form提交。
适用数据:大量数据,包括文件上传。
适用范围:同Get方法
用法:在客户端form指定action目标后submit、在asp.net的伺服端中使用server.Transfer(url)提交;在伺服端中用Request.Form["FormFieldID"]获取。
3. 页面对象的属性
& ......
1:在.aspx页面,<% %>标签相当于在.cs页面的代码,也就是说你在.cs文件里面怎样写,就可以在.aspx文件里面的<% %>标签里面怎样写。
2:在.aspx页面,<%= %>标签可以调用你的后台的变量或者方法等,不过被调用的方法必须是public的。
如果你的Default.cs文件里面有:
public string str = "调用后台方法!";
public string GetStr()
{
return "调用后台方法!";
}
那么你的Default.aspx文件里面就可以这样写:
<asp:Label ID="Label2" runat="server" Text='<%=str%>'></asp:Label>
<asp:Label ID="Label1" runat="server" Text='<%= GetStr() %>'></asp:Label>
3:<%#Eval() %>与<%#Bind() %>,这两者的使用方法非常相似,目前我只发现一点区别:
相同点:
1,两者都是绑定数据源的方法,比如说你想将数据库中的某个字段绑定到页面上的某个Label上,就有代码:
<asp:Label ID="Label1" runat="server" Text='<%#Eval("pSex") %>'></asp:Label>或者
<asp:Label ID="Label1" runat="server" Text='<%#Bind("pSex") %>'></asp:La ......
返回按钮的实现方法(asp.net 中)
引自:http://blog.sina.com.cn/s/blog_49df2d0b0100aqoy.html
返回上一页的这个东东在我们做项目的时候一般是用于填写完表单后确认的时候,有对原来输入的数据进行修改时用的,或者是因为网站为了方便浏览者而有心添加 的一个东东,一般这种功能的实现在ASP.net中都是用一个button的控件来实现的,实现的方法有很多,今天恰好在做项目时碰到要用这个东东,我就 把能实现" 返回上一页","返回前一页"的几种方法总结了一下,供大家学习之用,请多多指教:0)
其实要实现这个功能主要还是要用到javascript
方法一:
在asp.net的aspx里面的源代码中
<input type="button onclick="javascript:window.history.go(-1);"value="返回上一页">
浅析:这个是用了HTML控件,通过一个onclick的事件,调用了javascript中的一个方法就可以了。这个是最简单的了,也同样适用于静态页面,ASP页面等。
方法二:
利用Reponse.write
如果你对ASP有一定的了解,那么对Response.write这个东东就不会陌生了,方法一是直接有HTML页面中实现,则这个则是在后台环境中实现(这个说法好像不是很规范,呵呵)
Response.write("<sc ......
1.重载protected override bool OnBubbleEvent(object source, EventArgs args)
OnBubbleEvent是控件内包含的控件向外层控件作事件冒泡
-------------------------------------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.UI;
using System.ComponentModel;
public class uc_DanXuan : CompositeControl
{
private Button btnSave = null;
public EventHandler SaveAnswer; //定义这个是为了在控件外进行事件响应处理
protected override void CreateChil ......
asp.net 对 文件进行压缩 or 解压(zip)
/// <summary>
/// 对文件进行(压缩,解压)
/// </summary>
public static class ZIP
{
/// <summary>压缩文件</summary>
/// <param name="filename">filename生成的文件的名称,如:C\123\123.zip</param>
/// <param name="directory">directory要压缩的文件夹路径</param>
/// <returns></returns>
public static bool PackFiles(string filename, string directory)
{
try
{
directory = directory.Replace("/", "\\");
if (!directory.EndsWith("\\"))
directory += "\\";
if (!Directory.Exists(directory))
{
Directory.CreateDirectory(directory);
}
if (File.Exists(filename))
{
File.Delete(filename);
}
//ICSharpCode.SharpZipLib.Zip.ZipFile pp = new ZipFile();
//FastZip fz = new FastZip();
//fz.CreateEmptyDirectories = true;
//fz.CreateZip(filename, directory, true, "");
return true;
}
catch (Exception)
{
return false;
}
}
/// <summary>解压文件</summary>
/// <param name ......