barriers / 阅读 / 详情

在ASP.net(C#)中用LinkButton控件实现文件附件的下载,要求点击按钮之后,可直接下载保存

2023-08-04 05:40:54
共3条回复
西柚不是西游
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication2._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>

<script language="javascript">
//下载
function downLoadField(fieldPath){
window.open(fieldPath);
return null;
}

</script>

</head>
<body>
<form id="form1" runat="server">
<div>

<asp:LinkButton ID="LinkButton1" runat="server">点击下载</asp:LinkButton>

</div>
</form>
</body>
</html>
后台
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace WebApplication2
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//加载LinkButton的客户端
//此处下载 Web.config 文件,你可以传递相对路径。
this.LinkButton1.Attributes.Add("onclick", "return downLoadField("softWare/VS90sp1-KB945140-ENU.exe");");
}
}
}
cloud123
把linkbutton的连接地址指向 需要下载的文件
比如:http://1.x.com/1.rar
Chen

建议你自己去找一个下载功能的源代码!

现在这样说是不清楚的!

相关推荐

code-Behind的介绍

code-Behind是asp.net中的术语(代码后置)。在传统asp中,WEB页面的UI与逻辑都是写在一个页面里而无法分开。这种编写代码方式的最大弊端就是一旦UI或逻辑有所变动,都几乎不可避免的要对另一层进行相应改动,同时这种混合的代码编写方式暴露了程序的实现逻辑。asp.net解决了这些问题。
2023-08-03 22:19:121

什么是code-Behind技术,这种技术有何优势?

字面意思就是:代码在后面,也就是代码隐藏的意思。 主要是通过aspx页面指向对应的CS文件,可以实现显示逻辑和处理逻辑的分离,这样做有别于以前的asp页面和代码全混在一起不容易后期的修改和维护,使用code behind更容易维护,美工和程序员可以很好的分工
2023-08-03 22:19:321

什么是code-inline和code-behind

字面意思就是:代码在后面,也就是代码隐藏的意思。 主要是通过aspx页面指向对应的CS文件,可以实现显示逻辑和处理逻辑的分离,这样做有别于以前的asp页面和代码全混在一起不容易后期的修改和维护,使用code behind更容易维护
2023-08-03 22:19:401

ASP.NET代码隐藏codebehind

code behind code 编码。 behind 后面这是asp.net的一种技术。叫代码后置技术。把逻辑程序与显示部分代码分离。你自己搜索 asp 代码后置。 在vs。网站项目中新建空网页的话。 页面文件有两层 ,外层是 default.aspx ,内层就是代码内置层 default.aspx.cs
2023-08-03 22:19:481

指令
2023-08-03 22:19:553

关于

AutoEventWireup :指示控件的事件是否自动匹配 (Autowire)。如果启用事件自动匹配,则为 true;否则为 false。默认值为 true;Inherits :继承类 (命名空间+类名);Codebehind :代码绑定文件的名称,cs为文件名后缀。
2023-08-03 22:20:033

language="c#":aspx页面使用语言为C#Codebehind="Main.aspx.cs":后置代码存放在Main.aspx.cs文件中AutoEventWireup="false":是否自动绑定页面处理事件Inherits="Vod.WebForm1":后置代码类为Vod.WebForm1
2023-08-03 22:20:144

asp.net @page指令中src与codebehind的区别

你电脑的主机可以换啊
2023-08-03 22:20:273

codebehind model 是什么意思?

code-behind model代码分离模型
2023-08-03 22:20:355

表示这个页面的后台文件是DownFile.aspx.cs, 页面后台代码继承自Dxbbs.DownFile
2023-08-03 22:20:493

什么是CodeBehind技术?

代码隐藏,asp.net的技术,实现代码与页面分离,更清晰
2023-08-03 22:21:081

我也遇到这样的问题!你重新生成解决方案就好了!
2023-08-03 22:21:183

struts2-codebehind-plugin干什么用的

Strrurs拦截器是可插拔式的拦截器:如果我们要使用某个拦截器,只需要在配置文件中应用该拦截器即可。Struts拦截器由struts-default.xml,struts.xml等配置文件中进行管理。Struts2中已经默认启动了大量通用功能的拦截器(这些拦截器以name-class对的形式配置在struts-default.xml文件中),只要我们配置Action的package继承了struts-default包,这些拦截器就会起作用。拦截器几乎完成了Sturts2框架70%的工作。Sturts2几个常用内建拦截器的介绍:1)conversation:这是一个处理类型转换错误的拦截器,它负责将类型转换错误从ActionContext中取出,并转换成Action的FieldError错误。2)Exception:这个拦截器负责处理异常,它将异常映射成结果。3)fileUpload:这个拦截器主要用于文件上传,它负责解析表单中文件域的内容。4)i18n:这是支持国际化的拦截器,它负责把所选的语言、区域放入用户Session中。5)params:这是最基本的一个拦截器,它负责解析HTTP请求中的参数,并将参数值设置成Action对应的属性值。6)scope:这是范围转换拦截器,它可以将Action状态信息保存到HttpSession范围,或者保存到ServletContext范围内。7)token:这个拦截器主要用于阻止重复提交,它检查传到Action中的token,从而防止多次提交。只要我们定义的包继承了struts-default包,就可以直接使用这些拦截器。
2023-08-03 22:21:261

就像一个web窗体,可以由两个文件组成,分别是页面表示文件:某某.aspx,以及后置代码文件:某某.aspx.cs。在页面表示文件的处理指令里,会由 CodeBehind 属性来指定相应的后置代码文件,而 Class 属性是指定页面表示文件编译后的类名。通常类名和文件名会保持一致,当然特殊情况也可以不一样(不过一般都无此必要)。你这个一般处理程序类也是一样,所以xx既是类的名字,也是文件的名字,而??就是名称空间了。
2023-08-03 22:21:341

语言c#,是自动回发,后置代码文件Team.aspx.cs
2023-08-03 22:21:412

asp.net中如何在codebehind里实现对iframe页面跳转的控制?

改iframe 中src地址!
2023-08-03 22:21:494

为什么双击ASPX设计页面却进入到了ASPX代码页面,而不是.cs页面?

是不是设置的问题???
2023-08-03 22:21:576

这个应该是发布之后提示的错误信息吧这个错误的原因是因为你页面控件的ID或者页面变量和后台代码中的变量有冲突或者你页面的名称和代码中的变量名重名产生的虽然C#运行时能过去 不过发布到IIS中他不区分大小写
2023-08-03 22:22:111

怎么用net编译cs文件

操作如下:打开命令窗口->输入cmd到控制台->cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322转到vs.net安装的该目录下->执行csc命令csc /target:library File.cs->在该目录下产生一个对应名字的.dll文件(前提:把.cs文件放到C:WINDOWSMicrosoft.NETFrameworkv1.1.4322目录下)csc命令的方式很多,请参考以下,------------------------------------译 File.cs 以产生 File.exe: csc File.cs 编译 File.cs 以产生 File.dll: csc /target:library File.cs编译 File.cs 并创建 My.exe: csc /out:My.exe File.cs通过使用优化和定义 DEBUG 符号,编译当前目录中所有的 C# 文件。输出为 File2.exe: csc /define:DEBUG /optimize /out:File2.exe *.cs编译当前目录中所有的 C# 文件,以产生 File2.dll 的调试版本。不显示任何徽标和警告: csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs将当前目录中所有的 C# 文件编译为 Something.xyz(一个 DLL): csc /target:library /out:Something.xyz *.cs 编译 File.cs 以产生 File.dll: csc /target:library File.cs这个就是我们使用最多的一个命令,其实可以简单的写成csc /t:library File.cs,另外的一个写法是csc /out:mycodebehind.dll /t:library mycodebehind.cs,这个可以自己指定输出的文件名。csc /out:mycodebehind.dll /t:library mycodebehind.cs mycodebehind2.cs,这个的作用是把两个cs文件装到一个.dll文件里。。。
2023-08-03 22:22:201

行 1:

此处:Inherits="TalentL 代码贴完成。 正确应该是:"WebForm1"
2023-08-03 22:22:382

语法错误

有时候,像乱码一样,网址也会这样的。
2023-08-03 22:22:462

ASP.NET Web Page应用深入探讨

   一 服务器脚本基础介绍   首先 我们先复习一下Web服务器页面的基本执行方式    客户端通过在浏览器的地址栏敲入地址来发送请求到服务器端    服务器接收到请求之后 发给相应的服务器端页面(也就是脚本)来执行 脚本产生客户端的响应 发送回客户端    客户端浏览器接收到服务器传回的响应 对Html进行解析 将图形化的网页呈现在用户面前   对于服务器和客户端的交互 通常通过下面几种主要方式    Form 这是最主要的方式 标准化的控件来获取用户的输入 Form的提交将数据发送给服务器端处理    QueryString 通过在Url后面带参数达到将参数传送给服务器 这种方式其实跟Get方式的Form是一样的    Cookies 这是一种比较特殊的方式 通常用于用户身份的确认    二 ASP Net简介   传统的服务器脚本语言 如ASP JSP等 编写服务器脚本的方式大同小异 都是在Html中嵌入解释或编译执行的代码 由服务器平台执行这些代码来生成Html 对于这类似的脚本 页面的生存周期实际上很简单 就是从开头至末尾 执行完所有的代码 当然用Java编写的Servlet可以编写更复杂的代码 但是从结构上看 和JSP没什么区别   ASP Net的出现 打破了这种传统 ASP Net采用了CodeBehind技术和服务器端控件 加入了服务器端的事件的概念 改变了脚本语言编写的模式 更加贴近Window编程 使Web编程更加简单 直观 但是我们要看到 ASP Net本身并没有改变Web编程的基本模式 只是封装了一些细节 提供了一些易用的功能 使代码更容易编写和维护 从某种程度上来说 将服务器端执行的方式复杂化了 这就是我们今天要讨论的主体 ASP Net Web Page的生存周期    三 ASP Net请求处理模式   我们说 ASP Net的Web Page并没有脱离Web编程的模式 所以它仍然是以 请求 >接收请求 >处理请求 >发送响应 这样的模式在工作 每一次与客户端的交互都会引发一次新的请求 所以一个Web Page的生命周期是以一次请求为基础的   当IIS收到客户端的请求的时候 会将请求交给aspnet_wp这个进程来处理 这个进程会查看请求的应用程序域是否存在 如果不存在则会创建一个 然后会创建一个Http运行时(HttpRuntime)来处理请求 这个运行时 为当前应用程序提供一组 ASP NET 运行时服务 (摘自MSDN)   HttpRuntime在处理请求的时候 会维护一系列的应用程序实例 也就是应用程序的Global类(global asax)的实例 这些实例在没有请求的时候 会存放在一个应用程序池中(实际上应用程序池由另一个类来维护 HttpRuntime只是简单的调用) 每接收到一个请求 HttpRuntime都会获取一个闲置的实例来处理请求 这个实例在请求结束前不会处理其他的请求 处理完毕之后 它又会回到池中 一个实例在其生存期内被用于处理多个请求 但它一次只能处理一个请求 (摘自MSDN)   当应用程序实例处理请求的时候 它会创建请求页面类的实例 执行它的ProcessRequest方法来处理请求 这个方法也就是Web Page生命周期的开始    四 Aspx页面与CodeBehind   在深入了解页面的生命周期之前 我们先来探讨一些Aspx与CodeBehind之间的关系   <%@ Page language= c# Codebehind= WebForm aspx cs Inherits= MyNamespace WebForm %>   相信使用过CodeBehind技术的朋友 对ASPX顶部的这句话应该是非常熟悉了 我们来一项一项的分析它   Page language= c# 这个就不用多说了吧   Codebehind= WebForm aspx cs 这一句表示绑定的代码文件   Inherits= MyNamespace WebForm 这句非常重要 它表示页面继承的类名称 也就是CodeBehind的代码文件中的类 这个类必须从System Web WebControls Page派生   从上面我们可以分析出 实际上CodeBehind中的类就是页面(ASPX)的基类 到这里 可能有些朋友要问了 在编写ASPX的时候 完全是按照ASP的方式 在Html中嵌入代码或者嵌入服务器控件 没有看到所谓 类 的影子啊?   这个问题实际上并不复杂 各位使用ASP Net编程的朋友可以到你们的系统盘 WINDOWSMicrosoft NETFramework<版本号>Temporary ASP NET Files这个目录下 这个下面就放了所有本机上存在的ASP Net应用程序的临时文件 子目录的名称就是应用程序的名称 然后再下去两层(为了保证唯一 ASP Net自动产生了两层子目录 并且子目录名称是随机的) 然后我们会发现有很多类似 yfy gjhc dll xeunj u dll 这样的链接库以及 komee bp cs falckav cs 这样的源文件 实际上这就是ASPX被ASP Net动态编译后的结果 打开这些源文件我们可以发现   public class WebForm_aspx MyNamespace WebForm System Web SessionState IRequiresSessionState   这就印证了我们前面的说法 ASPX是代码绑定类的子类 它的名称是ASPX文件名加上 _aspx 后缀 通过研究这些代码我们可以发现 实际上所有aspx中定义的服务器控件都是在这些代码中生成的 然后动态产生这些代码的时候 把原来在ASPX中嵌入的代码写在了相应的位置   当某个页面第一次被访问的时候 Http运行时就会使用一个代码生成器去解析ASPX文件并生成源代码并编译 然后以后的访问就直接调用编译后的dll 这也是为什么ASPX第一次访问的时候非常慢的原因   解释了这个问题 我们再来看另一个问题 我们在使用代码绑定的时候 在设计页面拖一个控件 然后切换到代码视图 就可以直接在Page_Load中使用这个控件了 既然控件是在子类中产生的 那为什么在父类中可以直接使用呢?   实际上我们可以发现 每当用VS Net拖一个控件到页面上 代码绑定文件中总是会类似这样的添加一个声明   protected System Web WebControls Button Button   我们可以发现这个字段被声明成protected 而且名字与ASPX中控件的ID一致 仔细想一想 这个问题就迎刃而解了 我们前面提到ASPX的源代码是被生成器动态生成和编译的 生成器会产生动态生成每一个服务器控件的代码 在生成的时候 它会检查父类有没有声明这个控件 如果声明了 它会添加类似下面的一句代码   this DataGrid = __ctrl   这个__ctrl就是生成该控件的变量 这时候它就把控件的引用赋给了父类中相应的变量 这也是为什么父类中的声明必须为protected(实际上也可以为public) 因为要保证子类能够调用   然后在执行Page_Load的时候 因为这时候父类的声明已经被子类中的初始化代码赋了值 所以我们就可以使用这个字段来访问对应的控件 了解了这些 我们就不会犯在代码绑定文件中的构造器里使用控件 造成空引用的异常的错误了 因为构造器是最先执行的 这时候子类的初始化还没有开始 所以父类中的字段是空值 至于子类是什么时候初始化我们放到后面讨论    五 页面生存周期   现在回到第三个标题中讲到的内容 我们讲到了HttpApplication的实例接收请求 并创建页面类的实例 实际上这个实例也就是动态编译的ASPX的类的一个实例 上一个标题中我们了解到ASPX实际上是代码绑定中类的子类 所以它继承了所有的protected方法   现在我们来看看VS Net自动生成的CodeBehind类的代码 以此来开始我们对页面生命周期的探讨   #region Web Form Designer generated code   override protected void OnInit(EventArgs e)   { // // CODEGEN 该调用是 ASP NET Web 窗体设计器所必需的   // InitializeComponent() base OnInit(e) }   /// <summary> /// 设计器支持所需的方法 不要使用代码编辑器修改/// 此方法的内容   /// </summary>   private void InitializeComponent()   { this DataGrid ItemDataBound += new System Web UI WebControls DataGridItemEventHandler(this DataGrid _ItemDataBound)   this Load += new System EventHandler(this Page_Load) }   #endregion   这个就是使用VS Net产生的Page的代码 我们来看 这里面有两个方法 一个是OnInit 一个是InitializeComponent 后者被前者调用 实际上这就是页面初始化的开始 在InitializeComponent中我们看到了控件的事件声明和Page的Load声明   下面是从MSDN中摘录的一段描述和一个页面生命周期方法和事件触发的顺序表    每次请求 ASP NET 页时 服务器就会加载一个 ASP NET 页 并在请求完成时卸载该页 页及其包含的服务器控件负责执行请求并将 HTML 呈现给客户端 虽然客户端和服务器之间的通讯是无状态的和断续的 但是必须使客户感觉到这是一个连续执行的过程    这种连续性假象是由 ASP NET 页框架 页及其控件实现的 回发后 控件的行为必须看起来是从上次 Web 请求结束的地方开始的 虽然 ASP NET 页框架可使执行状态管理相对容易一些 但是为了获得连续性效果 控件开发人员必须知道控件的执行顺序 控件开发人员需要了解 在控件生命周期的各个阶段 控件可使用哪些信息 保持哪些数据 控件呈现时处于哪种状态 例如 在填充页上的控件树之前控件不能调用其父级 下表提供了控件生命周期中各阶段的高级概述 有关详细信息 请点击表中的链接   阶段 控件需要执行的操作 要重写的方法或事件初始化 初始化在传入 Web 请求生命周期内所需的设置 请参阅处理继承的事件 Init 事件(OnInit 方法)   加载视图状态 在此阶段结束时 就会自动填充控件的 ViewState 属性 详见维护控件中的状态中的介绍 控件可以重写 LoadViewState 方法的默认实现 以自定义状态还原 LoadViewState 方法处理回发数据 处理传入窗体数据 并相应地更新属性 请参阅处理回发数据   注意 只有处理回发数据的控件参与此阶段 LoadPostData 方法 (如果已实现IPostBackDataHandler)   加载 执行所有请求共有的操作 如设置数据库查询 此时 树中的服务器控件已创建并初始化 状态已还原并且窗体控件反映了客户端的数据 请参阅处理继承的事件 Load 事件(OnLoad 方法)   发送回发更改通知 引发更改事件以响应当前和以前回发之间的状态更改 请参阅处理回发数据   注意 只有引发回发更改事件的控件参与此阶段 RaisePostDataChangedEvent 方法(如果已实现 IPostBackDataHandler)   处理回发事件 处理引起回发的客户端事件 并在服务器上引发相应的事件 请参阅捕获回发事件   注意 只有处理回发事件的控件参与此阶段 RaisePostBackEvent 方法(如果已实现 IPostBackEventHandler)   预呈现 在呈现输出之前执行任何更新 可以保存在预呈现阶段对控件状态所做的更改 而在呈现阶段所对的更改则会丢失 请参阅处理继承的事件 PreRender 事件(OnPreRender 方法)   保存状态 在此阶段后 自动将控件的 ViewState 属性保持到字符串对象中 此字符串对象被发送到客户端并作为隐藏变量发送回来 为了提高效率 控件可以重写 SaveViewState 方法以修改 ViewState 属性 请参阅维护控件中的状态 SaveViewState 方法呈现 生成呈现给客户端的输出 请参阅呈现 ASP NET 服务器控件 Render 方法处置 执行销毁控件前的所有最终清理操作 在此阶段必须释放对昂贵资源的引用 如数据库链接 请参阅 ASP NET 服务器控件中的方法   Dispose 方法卸载 执行销毁控件前的所有最终清理操作 控件作者通常在 Dispose 中执行清除 而不处理此事件 UnLoad 事件(On UnLoad 方法)   从这个表里面我们可以清楚的看到一个Page从装载到卸载之间调用的方法和触发的时间 接下来我们就深入的对其进行一些分析   看了上面的表 细心的朋友可能要问了 既然OnInit是页面生命周期的开始 而我们在上一讲中谈到控件在子类中被创建 那么在这里实际上在InitializeComponent方法中我们已经可以使用父类中声名的字段了 那么就意味着子类的初始化更在这之前?   在第三个标题中我们讲到了页面类的ProcessRequest才是真正意义上的页面声明周期的开始 这个方法是由HttpApplication调用的(其中调用的方式比较复杂 有机会单独撰文来讲解) 一个Page对请求的处理就是从这个方法开始 通过反编译 Net类库来查看源代码 我们发现在System Web WebControls Page的基类 System Web WebControls TemplateControl(它是页面和用户控件的基类)中定义了一个 FrameworkInitialize 虚拟方法 然后在Page的ProcessRequest中最先调用了这个方法 在生成器生成的ASPX的源代码中我们发现了这个方法的踪影 所有的控件都在这个方法中被初始化 页面的控件树就在这个时候产生   接下来的事情就简单了 我们来逐步分析页面生命周期的每一项    初始化   初始化对应Page的Init事件和OnInit方法   如果要重写 MSDN推荐的方式是重载OnInti方法 而不是增加一个Init事件的代理 这两者是有差别的 前者可以控制调用父类OnInit方法的顺序 而后者只能在父类的OnInit后执行(实际上是在OnInit里面被调用的)    加载视图状态   这是个比较重要的方法 我们知道 对于每次请求 实际上是由不同的页面类实例来处理的 为了保证两次请求间的状态 ASP Net使用了ViewState   LoadViewState方法就是从ViewState中获取上一次的状态 并依照页面的控件树的结构 用递归来遍历整个树 将对应的状态恢复到每一个控件上    处理回发数据   这个方法是用来检查客户端发回的控件数据的状态是否发生了改变 方法的原型   public virtual bool LoadPostData(string postDataKey NameValueCollection postCollection)   postDataKey是标识控件的关键字(也就是postCollection中的Key) postCollection是包含回发数据的集合 我们可以重写这个方法 然后检查回发的数据是否发生了变化 如果是则返回一个True 如果控件状态因回发而更改 则 LoadPostData 返回 true 否则返回 false 页框架跟踪所有返回 true 的控件并在这些控件上调用 RaisePostDataChangedEvent (摘自MSDN)   这个方法是System Web WebControls Control中定义的 也是所有需要处理事件的自定义控件需要处理的方法 对于我们今天讨论的Page来说 可以不用管它    加载   加载对应Load事件和OnLoad方法 对于这个事件 相信大多数朋友都会比较熟悉 用VS Net生成的页面中的Page_Load方法就是响应Load事件的方法 对于每一次请求 Load事件都会触发 Page_Load方法也就会执行 相信这也是大多数人了解ASP Net的第一步   Page_Load方法响应了Load事件 这个事件是在System Web WebControl Control类中定义的(这个类是Page和所有服务器控件的祖宗) 并且在OnLoad方法中被触发   很多人可能碰到过这样的事情 写了一个PageBase类 然后在Page_Load中来验证用户信息 结果发现不管验证是否成功 子类页面的Page_Load总是会先执行 这个时候很可能留下一些安全性的隐患 用户可能在没有得到验证的情况下就执行了子类中的Page_Load方法   出现这个问题的原因很简单 因为Page_Load方法是在OnInit中被添加到Load事件中的 而子类的OnInit方法中是先添加了Load事件 然后再调用base OnInit 这样就造成了子类的Page_Load被先添加 那么先执行了   要解决这个问题也很简单 有两种方法    ) 在PageBase中重载OnLoad方法 然后在OnLoad中验证用户 然后调用base OnLoad 因为Load事件是在OnLoad中触发 这样我们就可以保证在触发Load事件之前验证用户    ) 在子类的OnInit方法中先调用base OnInit 这样来保证父类先执行Page_Load    发送回发更改通知   这个方法对应第 步的处理回发数据 如果处理回发数据返回True 页面框架就会调用此方法来触发数据更改的事件 所以自定义控件的回发数据更改事件需要在此方法中触发   同样这个方法对于Page来说 没有太大的用处 当然你也可以在Page的基础上自己定义数据更改的事件 这当然也是可以的    处理回发事件   这个方法是大多数服务器控件事件引发的地方 当请求中包含控件事件触发的信息时(服务器控件的事件是另一个论题 我会在不久将来另外撰文讨论) 页面控件会调用相应控件的RaisePostBackEvent方法来引发服务器端的事件   这里又引出一个常见的问题   经常有网友问 为什么修改提交后的数据并没有更改   多数的情况都是他们没有理解服务器事件的触发流程 我们可以看出 触发服务器事件是在Page的Load之后 也就是说页面会先执行Page_Load 然后才会执行按钮(这里以按钮为例)的点击事件 很多朋友都是在Page_Load中绑定数据 然后在按钮事件中处理更改 这样做有一个毛病 Page_Load永远都是在按钮事件之前执行 那么意味着数据还没来得及更改 Page_Load中的数据绑定的代码就先执行了 原有的数据又赋给了控件 那么执行按钮事件的时候 实际上获得的是原有的数据 那么更新当然就没有效果了   更改这个问题也非常简单 比较合理的做法是把数据绑定的代码写成一个方法 我们假设为BindData   private void BindData()   { //绑定数据}   然后修改PageLoad   private void Page_Load( object sender EventArgs e )   { if( !IsPostBack )   { BindData() //在页面第一次访问的时候绑定数据}   最后在按钮事件中   private Button _Click( object sender EventArgs e )   { //更新数据BindData() //重新绑定数据}    预呈现   最终请求的处理都会转变为发回服务器的响应 预呈现这个阶段就是执行在最终呈现之前所作的状态的更改 因为在呈现一个控件之前 我们必须根据它的属性来产生Html 比如Style属性 这是最典型的例子 在预呈现之前 我们可以更改一个控件的Style 当执行预呈现的时候 我们就可以把Style保存下来 作为呈现阶段显示Html的样式信息    保存状态   这个阶段是针对加载状态的 我们多次提到 请求之间是不同的实例在处理 所以我们需要把本次的页面和控件的状态保存起来 这个阶段就是把状态写入ViewState的阶段    呈现   到这里 实际上页面对请求的处理基本就告一段落了 在Render方法中 会递归整个页面的控件树 依次调用Render方法 把对应的Html代码写入最终响应的流中    处置   实际上就是Dispose方法 在这个阶段会释放占用的资源 例如数据库连接    卸载   最后 页面会执行OnUnLoad方法触发UnLoad事件 处理在页面对象被销毁之前的最后处理 实际上ASP Net提供这个事件只是设计上的考虑 通常资源的释放都会在Dispose方法中完成 所以这个方法也变成鸡肋了   我们简单的介绍了页面的生存周期 对于服务器端事件的处理做了不太深入的讲解 今天主要是想大家了解页面执行的周期 对于服务器控件的事件和生存期我会在后续在写一些文章来探讨 lishixinzhi/Article/program/net/201311/13003
2023-08-03 22:22:531

一样的地址加上/UserLogout.ashx.cs这个文件,但是一般这种文件是防下载的,应该是下载不了的
2023-08-03 22:23:031

ASP.NET3.5网站开发实例教程?

ASP.NET3.5网站开发实例教程?首先运行visualstudio2015进入vs2015主画面找到左上角的文件依次找到文件->新建->项目在打开的新建项目窗口中,找到我们的framwork版本我们选择ASP.NET3.5选择ASP.NET3.5后,在左侧找到web项目选择ASP.NET空web应用程序接着定义我们的应用程序名称和位置设定完成后,选择确定,选择确定后,就会根据我们的设定,生成应用程式所需的文件和框架目录结构见下图因为我们是创建的空应用程序所有整个目录结构很简单我们可以右键单击我们的应用程序,选择属性来确认我们当前的框架是否使用的是ASP.NET3.5接着我们就可以开发我们的web应用程序了我们新建一个aspx页面简单的填入以下内容:<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="WebForm1.aspx.cs"Inherits="WebApplication1.WebForm1"%><!DOCTYPEhtml><htmlxmlns="l"><headrunat="server"><metahttp-equiv="Content-撰写代码完成后,保存并运行就可以了这样一个简单的web应用程序实例就创建完成了
2023-08-03 22:23:101

ASP.NET C# 在线等 求高手介绍 这些是什么意思 务必详细 谢谢

第一行的意思是显示这个页面的信息 包括使用语言,指示控件的事件是否自动匹配,后置代码页,描述。第二行是引用用户控件,用户控件的地址,标签名称,自定义引用空间名称(大概这个意思)。使用方式 <uc1:Nav ID="nav" runat="server" /> 需要引用的地方写上这句 就会调用了。 我倒 他那个那么多字 你都看的懂吗?
2023-08-03 22:23:182

应用程序中的服务器错误.

fjfgjfgghhsdfvsbdbfjjkghjkghjghj
2023-08-03 22:23:262

可能是项目没编译 或 编译未完成 或 编译时出错
2023-08-03 22:23:341

ASP. NET错误代码是什么?

一、网络上的一般说法1、ViewState 对象为Null。2、DateSet 空。3、sql语句或Datebase的原因导致DataReader空。4、声明字符串变量时未赋空值就应用变量。5、未用new初始化对象。6、Session对象为空。7、对控件赋文本值时,值不存在。8、使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值。9、使用FindControl时,控件不存在却没有做预处理。10、重复定义造成未将对象引用设置到对象的实例错误.二、 (1)所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现.  (2)控件名称与codebehind里面的没有对应  (3)未用new初始化对象  (4)在程序中所引用的控件不存在  解决方法:  (1)使用try..catch...finally捕捉错误,或直接用response.write()输出所取的变量值  (2)查看代码中是否存在未初始化的变量三、SqlConnection.Open 未将对象引用设置到对象的实例在使用VS2003开发 ASP.NET程序时候 有时候操作 SqlConnection对象的Open()方法时候会出现未将对象引用设置到对象的实例。说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 。。。。conn.Open();
2023-08-03 22:23:531

教你30秒打造强类型ASP.NET数据绑定

数据绑定似乎是老掉牙的东西了。可是你知道吗,只需要一点小小的改动就可以替换Eval,摆脱字符串依赖并且大大提高性能。首先在code behind中加入以下方法protected virtual object ExpHelperTEntity, TREsult(FuncTEntity, TREsult func){ var itm = GetDataItem(); return func((TEntity)itm);}这段代码就是最核心的秘诀了,你完全可以忽视它到底在做什么。其实就是截获每一个被绑定的数据项,并进行强类型转换。假设我们定义了学生类public class Student{ public string Name { get; set; } public int Age { get; set; }}如果希望在页面中使用强类型访问学生类而不是用Eval,定义专门访问学生的方法protected object StuTResult(FuncStudent, TResult func){ return ExpHelperStudent, TResult(func);}大功告成,于是在页面里我们就能这样绑定数据了ulasp:Repeater ID="rptStudents" runat="server"ItemTemplate li%#Stu(_=_.Name + "(" +_.Age+")")%/li/ItemTemplate/asp:Repeater/ul这样做有四大优势得到编译时检测享受智能提示强类型转换比Eval反射性能更高页面中的表示更丰富,如上我们可以自由拼接想要的字符串,非常像MVC更神奇的是可以支持多层嵌套哦。比如我们定义学生的集合Group类和访问器,然后就能用嵌套的Repeater显示分组信息了。完整程序如下%@ Page Language="C#" AutoEventWireup="true"%script runat="server" public class Student { public string Name { get; set; } public int Age { get; set; } } public class Group { public IEnumerableStudent Students { get; set; } } protected void Page_Load(object sender, EventArgs e) { //一群学生 var students = new[] { new Student{Name="mike",Age=23}, new Student{Name="jane", Age=12}, new Student{Name="frank",Age=25}, new Student{Name="susan",Age=32}, }; rptStudents.DataSource = students; //分两组 var group0 = new Group(); group0.Students = students.Take(2); var group1 = new Group(); group1.Students = students.Skip(2).Take(2); rptGroups.DataSource = new[] { group0, group1 }; DataBind(); } protected virtual object ExpHelperTEntity, TREsult(FuncTEntity, TREsult func) { var itm = GetDataItem(); return func((TEntity)itm); } //Student访问器 protected object StuTResult(FuncStudent, TResult func) { return ExpHelperStudent, TResult(func); } //Group访问器 protected object GrpTResult(FuncGroup, TResult func) { return ExpHelperGroup, TResult(func); }/script!DOCTYPE htmlhtmlbody %--单层--% ul asp:Repeater ID="rptStudents" runat="server" ItemTemplate li%#Stu(_=_.Name + "(" +_.Age+")")%/li /ItemTemplate /asp:Repeater /ul %--嵌套--% ul asp:Repeater ID="rptGroups" runat="server" ItemTemplate li ol asp:Repeater ID="Repeater1" runat="server" DataSource="%#Grp(_=_.Students) %" ItemTemplate li%#Stu(_=_.Name + "(" +_.Age+")")%/li /ItemTemplate /asp:Repeater /ol /li /ItemTemplate /asp:Repeater /ul/body/htmlPS本文是我以前写的没有发表的小发明,现在拿出来晒,主要是因为这个方法好像知道的人很少。希望大家能帮助测试一下性能,如果觉得合适大可以运用到实际工作中。更新:感谢Dacey 韦恩卑鄙 dudu老大等人的建议我已添加了扩展方法版本。喜欢扩展方法这种空降兵的感觉。现在只要添加一个static的帮助类,名字随你喜欢public static class Helper{ static object ExpHelperTEntity, TResult(Page page, FuncTEntity, TResult func) { var itm = page.GetDataItem(); return func((TEntity)itm); } public static object EvalT(this Page page, FuncT, object func) { return ExpHelperT, object(page, func); }}在页面中就可以%#this.EvalStudent(_ = _.Name + "(" + _.Age + ")")%注意this是必须的扩展方法具有很好的粘合性不需要一个父类定义通用方法泛型提供多个副本并且容易看清类型另外能很好的支持refactor,大家试试用ctrl+r+r改属性名
2023-08-03 22:24:121

ASP.NET中DataGrid控件应用技巧简述

   一.概述   运用ASP NET开发Web应用程序过程中 DataGrid是一个非常重要的控件 几乎任何和数据相关的表现都要用到该控件 所以熟练掌握DataGrid控件的应用技巧是每个Web开发人员所必备的基本能力   DataGrid控件能以表格的方式显示数据源中的数据 并提供了诸如分页 排序以及过滤等一些强大的内置功能 所以它能大大简化Web应用程序的开发过程 同时 开发者还可以通过运用各种不同的数据绑定列来自定义DataGrid控件显示数据的方式 这样就大大增强了DataGrid控件的功能 本文我就将向大家介绍如何运用其中的TemplateColumn EditCommandColumn HyperlinkColumn ButtonColumn以及BoundColumn等来自定义DataGrid控件显示数据的方式   二.BoundColumn数据列的应用   一般地 我们运用DataGrid控件开发数据驱动的Web应用程序时会以一行显示数据源中的某一条记录 而其中的一列则显示某个特定的字段值 DataGrid控件本身为我们提供了强大的功能 所以我们只需要以很少的代码便可以实现数据的显示功能 不过 这样也带来了一个问题 那就是我们如何来个性化显示数据的方式呢?显然DataList控件和Repeater控件在这个方面要强于DataGrid控件 不过如果我们放弃了DataGrid控件也就相当于放弃了其具有的强大功能 那么 我们如何运用DataGrid控件也来实现数据显示的自定义功能呢?首先 我们得把DataGrid控件根据数据源自动产生数据绑定列的功能关掉 方法很简单 就是将其AutoGenerateColumns属性设置为False即可 下面是这种方法的一个示例 <asp:DataGrid runat= server id= myDataGrid AutoGenerateColumns= False ></asp:DataGrid>   一旦其AutoGenerateColumns属性为False值 我们就得编程实现数据列的绑定了 在绑定数据列过程中 我们可以运用上面介绍的五中数据列中的任何一种 不过任何数据列都必须在<Columns></Columns>标记内被定义 这个标记能表明被定义的对象是一种数据列   下面我们首先来介绍BoundColumn数据列的应用 通过运用BoundColumn数据列 我们能根据自己的需求来动态地将数据源中的数据绑定到特定的数据列上并修改数据列的外观 比如我们可以更改各个列显示的次序 使DataGrid控件只显示某些字段的值而非全部字段的值 更改数据列的标题等等 BoundColumn数据列能设定DataField DataFormatString FooterText HeaderText HeaderImageUrl以及SortField等属性 而正是这些使得DataGrid控件的外观变得千变万化 多姿多彩   下面 我们来建立一个示例性的Web应用程序项目 该项目运用到了DataGrid控件 并且显示了如何在其中运用BoundColumn数据列来自定义数据的显示方式 下面是本项目的主要文件以及其代码后置文件的内容   WebForm aspx <%@ Page language= c# Codebehind= WebForm aspx cs AutoEventWireup= false Inherits= DataGridTemplates WebForm %><!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN ><HTML><HEAD><title>WebForm </title><meta name= GENERATOR Content= Microsoft Visual Studio ><meta name= CODE_LANGUAGE Content= C# ><meta name= vs_defaultClientScript content= JavaScript ><meta name= vs_targetSchema content= //schemas microsoft /intellisense/ie ></HEAD><body><form id= Form method= post runat= server ><asp:DataGrid runat= server id= myDataGrid AutoGenerateColumns= False BorderWidth= px Font Names= Verdana Arial sans serif Font Size= px BorderColor= # GridLines= Horizontal CellPadding= ><AlternatingItemStyle BackColor= #E E E ></AlternatingItemStyle><HeaderStyle Font Bold= True ForeColor= White BackColor= Teal ></HeaderStyle><Columns><asp:BoundColumn DataField= CustomerID HeaderText= ID ></asp:BoundColumn><asp:BoundColumn DataField= CompanyName HeaderText= Company Name ></asp:BoundColumn><asp:BoundColumn DataField= ContactName HeaderText= Contact Name ></asp:BoundColumn><asp:BoundColumn DataField= Address HeaderText= Address ></asp:BoundColumn><asp:BoundColumn DataField= City HeaderText= City ></asp:BoundColumn><asp:BoundColumn DataField= Region HeaderText= Region ></asp:BoundColumn><asp:BoundColumn DataField= PostalCode HeaderText= Postal Code ><HeaderStyle Wrap= False ></HeaderStyle></asp:BoundColumn></Columns></asp:DataGrid></form></body></HTML> WebForm aspx cs using System;using System Collections;using System ComponentModel;using System Data;using System Data SqlClient;using System Drawing;using System Web;using System Web SessionState;using System Web UI;using System Web UI WebControls;using System Web UI HtmlControls; namespace DataGridTemplates{/// <summary>/// WebForm 的摘要说明 /// </summary>public class WebForm : System Web UI Page{protected System Web UI WebControls DataGrid myDataGrid; private void Page_Load(object sender System EventArgs e){// 在此处放置用户代码以初始化页面if( !Page IsPostBack )BindData();} private void BindData(){SqlConnection con = new SqlConnection( server=localhost;database=Northwind;integrated security=true; );SqlCommand cmd = new SqlCommand( SELECT * FROM Customers con ); try{con Open();myDataGrid DataSource = cmd ExecuteReader();myDataGrid DataBind();con Close();}catch( Exception ) {}if( con != null && con State == ConnectionState Open )con Close();} #region Web Form Designer generated codeoverride protected void OnInit(EventArgs e){//// CODEGEN 该调用是 ASP NET Web 窗体设计器所必需的 //InitializeComponent();base OnInit(e);} /// <summary>/// 设计器支持所需的方法 不要使用代码编辑器修改/// 此方法的内容 /// </summary>private void InitializeComponent(){ this Load += new System EventHandler(this Page_Load);}#endregion}}   项目创建完毕 在浏览器中运行的效果如图 所示 图 DataGrid控件中运用BoundColumn数据列显示数据的效果    三.HyperlinkColumn数据列以及ButtonColumn数据列的应用   上面我向大家介绍了BoundColumn数据列的应用 而其它的两种数据列 HyperlinkColumn数据列以及ButtonColumn数据列的应用方式与之相差无几   HyperlinkColumn数据列包含了DataTextField属性以及DataNavigateUrlField属性等 前者可以用于指定要显示的文本内容 而后者则用于指定超链接 同时HyperlinkColumn数据列还包含了一个可用于指定文本显示格式的DataNavigateUrlFormatString属性   像HyperlinkColumn数据列那样ButtonColumn数据列也提供了DataTextField属性以及DataTextFormatString属性 同时它还提供了一个CommandName属性 该属性能指定按钮被点击时服务器端的响应动作 而此时DataGrid控件的OnItemCommand属性必须指向一个相应的方法 该方法在按钮被点击时会自动被调用 DataGrid控件中的一行可以包含多个ButtonColumn数据列 每个数据列中的按钮消息响应函数都是OnItemCommand属性所对应的方法 而不同的按钮是根据其CommandName属性来区分函数所应执行的不同部分的 ButtonColumn数据列还提供了一个ButtonType属性以指定按钮的外观 该属性包括两种可取值 LinkButton(默认)和PushButton   下面我们在原来解决方案的基础上再添加一个新的Web应用程序项目 并在其中运用DataGrid控件的BoundColumn数据列 HyperlinkColumn数据列以及ButtonColumn数据列 下面是本项目的主要文件以及其代码后置文件的内容   WebForm aspx <%@ Page language= c# Codebehind= WebForm aspx cs AutoEventWireup= false Inherits= DataGridTemplates WebForm %><!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN ><HTML><HEAD><title>WebForm </title><meta name= GENERATOR Content= Microsoft Visual Studio ><meta name= CODE_LANGUAGE Content= C# ><meta name= vs_defaultClientScript content= JavaScript ><meta name= vs_targetSchema content= //schemas microsoft /intellisense/ie ></HEAD><body MS_POSITIONING= FlowLayout ><form id= Form method= post runat= server ><asp:DataGrid id= myDataGrid runat= server HeaderStyle Font Bold= True Cellpadding= BorderWidth= px AutoGenerateColumns= False GridLines= Horizontal Font Names= Verdana Arial sans serif Font Size= px BorderStyle= Solid ><AlternatingItemStyle BackColor= #EFEFEF ></AlternatingItemStyle><ItemStyle Font Size= X Small ></ItemStyle><HeaderStyle Font Bold= True ForeColor= White BackColor= Teal ></HeaderStyle><Columns><asp:BoundColumn DataField= CustomerID HeaderText= ID ></asp:BoundColumn><asp:HyperLinkColumn DataNavigateUrlField= Url DataTextField= CompanyName HeaderText= Comapny Name ></asp:HyperLinkColumn><asp:ButtonColumn Text= Get Details ButtonType= PushButton CommandName= GetDetails ></asp:ButtonColumn></Columns></asp:DataGrid></form></body></HTML> WebForm aspx cs using System;using System Collections;using System ComponentModel;using System Data;using System Data SqlClient;using System Drawing;using System Web;using System Web SessionState;using System Web UI;using System Web UI WebControls;using System Web UI HtmlControls; namespace DataGridTemplates {/// <summary>/// WebForm 的摘要说明 /// </summary>public class WebForm : System Web UI Page{protected System Web UI WebControls DataGrid myDataGrid; private void Page_Load(object sender System EventArgs e){// 在此处放置用户代码以初始化页面if( !Page IsPostBack )BindData();} private void BindData(){SqlConnection con = new SqlConnection( server=localhost;integrated security=true;database=Northwind );SqlCommand cmd = new SqlCommand( SELECT * // + CustomerID + As Url FROM Customers con );try{con Open();myDataGrid DataSource = cmd ExecuteReader();myDataGrid DataBind();con Close();}catch( Exception ) {}if( con != null && con State == ConnectionState Open )con Close();} #region Web Form Designer generated codeoverride protected void OnInit(EventArgs e){//// CODEGEN 该调用是 ASP NET Web 窗体设计器所必需的 //InitializeComponent();base OnInit(e);} /// <summary>/// 设计器支持所需的方法 不要使用代码编辑器修改/// 此方法的内容 /// </summary>private void InitializeComponent(){ this myDataGrid ItemCommand += new System Web UI WebControls DataGridCommandEventHandler(this myDataGrid_ItemCommand);this Load += new System EventHandler(this Page_Load);}#endregion private void myDataGrid_ItemCommand(object source System Web UI WebControls DataGridCommandEventArgs e){if( e CommandName == GetDetails )Response Redirect( WebForm aspx?id= + e Item Cells[ ] Text );}}}   项目创建完毕 在浏览器中运行的效果如图 所示 图 DataGrid控件中运用HyperlinkColumn以及ButtonColumn数据列显示数据的效果    四.TemplateColumn数据列的应用   DataGrid控件中的TemplateColumn数据列可以说是功能极其强大的 灵活地运用它就能使得DataGrid控件显示数据的方式变得多种多样 TemplateColumn数据列主要为我们提供了以下四种数据列模板   ·HeaderTemplate   ·ItemTemplate   ·EditItemTemplate   ·FooterTemplate   其中HeaderTemplate是用于显示DataGrid控件的首行中的文本 图片或是绑定数据的 FooterTemplate的功能与HeaderTemplate的功能类似 不过它是用于显示尾行中的内容的 EditItemTemplate是应用于具有编辑功能的数据列的 任何运用了该模板的数据列的数据能被用户编辑并在适当时候更新到数据源中   ItemTemplate允许你建立具有完全自定义数据显示方式的数据列 通过运用<%# Container DataItem( [FieldName] ) %>或<%# DataBinder Eval(Container DataItem [FieldName] { :[FormatString]} ) %>两种数据绑定语法你就可以将数据源中的某列数据绑定到相应的数据列中并赋予完全自定义的显示方式   下面我们在第三步中建立的Web应用程序中添加一个新的Web页面-WebForm 该页面能显示公司的详细信息 也就是在图 中的按钮被点击时浏览器会导向到的页面 它能根据用户的选择显示相应公司的详细信息 方法就是判断Request QueryString内的信息 如果其中包含了一个 id 名/值对 则根据其中的值选择相对应的公司信息并显示在页面中 如果没有包含任何 id 值的信息则从数据表中选取所有公司的信息并显示在页面中 同时还要指出的是 在一个DataGrid控件中你可以将多种类型的数据列结合起来一起使用 并根据不同的需要选择合适的数据列显示相应的数据 下面是本页面的HTML文件以及其代码后置文件的内容   WebForm aspx <%@ Page language= c# Codebehind= WebForm aspx cs AutoEventWireup= false Inherits= DataGridTemplates WebForm %><!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN ><HTML><HEAD><title>WebForm </title><meta name= GENERATOR Content= Microsoft Visual Studio ><meta name= CODE_LANGUAGE Content= C# ><meta name= vs_defaultClientScript content= JavaScript ><meta name= vs_targetSchema content= //schemas microsoft /intellisense/ie ></HEAD><body MS_POSITIONING= FlowLayout ><form id= Form method= post runat= server ><asp:datagrid id= myDataGrid runat= server ItemStyle Font Size= x *** all HeaderStyle Font Bold= True HeaderStyle Font Size= x *** all AlternatingItemStyle BackColor= #EFEFEF Cellpadding= BorderWidth= AutoGenerateColumns= False BorderStyle= Solid GridLines= Horizontal BorderColor= # Font Names= Verdana Arial sans serif Font Size= px ><AlternatingItemStyle BackColor= #E E E ></AlternatingItemStyle><ItemStyle Font Size= X Small ></ItemStyle><HeaderStyle Font Size= X Small Font Bold= True ForeColor= White BackColor= Teal ></HeaderStyle><Columns><asp:TemplateColumn><HeaderTemplate><b>Company Detail</b></HeaderTemplate><ItemTemplate><table border= Cellpadding= Cellspacing= Width= % style= FONT SIZE: px; FONT FAMILY: Verdana Arial sans serif ><tr><td colspan= ><b><%# DataBinder Eval( Container DataItem CompanyName ) %></b></td></tr><tr><td width= % valign= top ><b>Contact:</b></td><td width= % valign= top nowrap><%# DataBinder Eval( Container DataItem ContactName ) %></td><td width= % valign= top ><b>Phone:</b></td><td width= % valign= top nowrap><%# DataBinder Eval( Container DataItem Phone ) %></td></tr><tr><td width= % valign= top ><b>Title:</b></td><td width= % valign= top ><%# DataBinder Eval( Container DataItem ContactTitle ) %></td><td width= % valign= top ><b>Fax:</b></td><td width= % valign= top nowrap><%# DataBinder Eval( Container DataItem Fax ) %></td></tr><tr><td width= % valign= top ><b>Address:</b></td><td width= % valign= top colspan= ><%# DataBinder Eval( Container DataItem Address ) %><br><%# DataBinder Eval( Container DataItem City ) %> <%# DataBinder Eval( Container DataItem Region ) %><%# DataBinder Eval( Container DataItem PostalCode ) %><br><%# DataBinder Eval( Container DataItem Country ) %></td></tr></table></ItemTemplate></asp:TemplateColumn></Columns></asp:datagrid></form></body></HTML> WebForm aspx cs using System;using System Collections;using System ComponentModel;using System Data;using System Data SqlClient;using System Drawing;using System Web;using System Web SessionState;using System Web UI;using System Web UI WebControls;using System Web UI HtmlControls; namespace DataGridTemplates {/// <summary>/// WebForm 的摘要说明 /// </summary>public class WebForm : System Web UI Page{protected System Web UI WebControls DataGrid myDataGrid; private void Page_Load(object sender System EventArgs e){// 在此处放置用户代码以初始化页面if( !Page IsPostBack )BindData();} private void BindData(){DataSet ds = new DataSet();SqlDataAdapter da;String strSQL; if( Request QueryString[ id ] == null )strSQL = SELECT * FROM Customers ;elsestrSQL = SELECT * FROM Customers WHERE CustomerID = + Request QueryString[ id ] ToString() + ; da = new SqlDataAdapter( strSQL server=localhost;integrated security=true;database=Northwind );da Fill( ds Customers );myDataGrid DataSource = ds Tables[ Customers ] DefaultView;myDataGrid DataBind();} #region Web Form Designer generated codeoverride protected void OnInit(EventArgs e){//// CODEGEN 该调用是 ASP NET Web 窗体设计器所必需的 //InitializeComponent();base OnInit(e);} /// <summary>/// 设计器支持所需的方法 不要使用代码编辑器修改/// 此方法的内容 /// </summary>private void InitializeComponent(){ this Load += new System EventHandler(this Page_Load);}#endregion}}   新页面创建完毕 在浏览器中运行的效果如图 所示 图 DataGrid控件中运用TemplateColumn数据列显示数据的效果    五.总结 lishixinzhi/Article/program/net/201311/15737
2023-08-03 22:24:191

仿百度登陆弹窗的JS或者jquery代码 求详细

代码如下:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="autoSearch._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title></title> <link href="autoSearchText.css" type="text/css" rel="Stylesheet" /> <script src="jquery-1.5.1.min.js" type="text/javascript"></script> <%if (false){ %> <script type="text/javascript" src="jquery-1.5.1.js"></script> <%} %> <script src="jquery.autoSearchText.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function() { $("#autoSearchText").autoSearchText({ width: 300, itemHeight: 150,minChar:1, datafn: getData, fn: alertMsg }); }); function alertMsg(vl){ alert("你将要搜索的关键字是: "+vl); } /*加载数据*/ function getData(val) { var arrData = new Array(); if (val != "") { $.ajax({ type: "post", async: false, //控制同步 url: "getData.ashx", data: "param=" + val, dataType: "json", cache: false, success: function(data) { for (var i = 0; i < data.length; i++) { if (val == data[i].Code.substring(0, val.length)) arrData.push(data[i].Code); } }, Error: function(err) { alert(err); } }); } return arrData; } </script> </head> <body> <form id="form1" runat="server"> <div> <input id="autoSearchText" type="text" value="请输入编码" enableviewstate="false"/> <br /> <input id="Text1" type="text" style=" display:none;"/> </div> </form> </body> </html> CSS: 复制代码代码如下:.autoSearchText{ border:solid 1px #CFCFCF; height:20px; color:Gray; } .menu_v{ margin:0; padding:0; line-height:20px; font-size:12px; list-style-type:none; } .menu_v li{ margin:0; padding:0; line-height:20px; font-size:14px; list-style-type:none; float:none; } .menu_v li span{ color:Red; } #autoSearchItem{ border:solid 1px #CFCFCF; visibility:hidden; position:absolute; background-color:white; overflow-y:auto; } JS: 复制代码代码如下:1 ///<reference path="jquery-1.5.1.js" /> 2 3 (function($) { 4 var itemIndex = 0; 5 6 $.fn.autoSearchText = function(options) { 7 //以下为该插件的属性及其默认值 8 var deafult = { 9 width: 200, //文本框宽 itemHeight: 150, // 下拉框高 minChar: 1, //最小字符数(从第几个开始搜索) datafn: null, //加载数据函数 fn: null //选择项后触发的回调函数 }; var textDefault = $(this).val(); var ops = $.extend(deafult, options); $(this).width(ops.width); var autoSearchItem = "<div id="autoSearchItem"><ul class="menu_v"></ul></div>"; $(this).after(autoSearchItem); $("#autoSearchItem").width(ops.width + 2); //设置项宽 $("#autoSearchItem").height(ops.itemHeight); //设置项高 $(this).focus(function() { if ($(this).val() == textDefault) { $(this).val(""); $(this).css("color", "black"); } }); var itemCount = $("li").length; //项个数 /*鼠标按下键时,显示下拉框,并且划过项时改变背景色及赋值给输入框*/ $(this).bind("keyup", function(e) { if ($(this).val().length >= ops.minChar) { var position = $(this).position(); $("#autoSearchItem").css({ "visibility": "visible", "left": position.left, "top": position.top + 24 }); var data = ops.datafn($(this).val()); initItem($(this), data); var itemCount = $("li").length; switch (e.keyCode) { case 38: //上 if (itemIndex > 1) { itemIndex--; } $("li:nth-child(" + itemIndex + ")").css({ "background": "blue", "color": "white" }); $(this).val($("li:nth-child(" + itemIndex + ")").find("font").text()); break; case 40: //下 if (itemIndex < itemCount) { itemIndex++; } $("li:nth-child(" + itemIndex + ")").css({ "background": "blue", "color": "white" }); $(this).val($("li:nth-child(" + itemIndex + ")").find("font").text()); break; case 13: //Enter if (itemIndex > 0 && itemIndex <= itemCount) { $(this).val($("li:nth-child(" + itemIndex + ")").find("font").text()); $("#autoSearchItem").css("visibility", "hidden"); ops.fn($(this).val()); } break; default: break; } } }); /*点击空白处隐藏下拉框*/ $(document).click(function() { $("#autoSearchItem").css("visibility", "hidden"); }); }; /*获取文本框的值*/ $.fn.getValue = function() { return $(this).val(); }; /*初始化下拉框数据,鼠标移过每项时,改变背景色并且将项的值赋值给输入框*/ function initItem(obj, data) { var str = ""; if (data.length == 0) { $("#autoSearchItem ul").html("<div style="text-align:center;color:red;">无符合数据<div>"); } else { for (var i = 1; i <= data.length; i++) { str += "<li><span>" + i + "/" + data.length + "</span> <font>" + data[i - 1] + "</font></li>"; } $("#autoSearchItem ul").html(str); } /*点击项时将值赋值给搜索文本框*/ $("li").each(function() { $(this).bind("click", function() { obj.val($(this).find("font").text()); $("#autoSearchItem").css("visibility", "hidden"); }); }); /*鼠标划过每项时改变背景色*/ $("li").each(function() { $(this).hover( function() { $("li:nth-child(" + itemIndex + ")").css({ "background": "white", "color": "black" }); itemIndex = $("li").index($(this)[0]) + 1; $(this).css({ "background": "blue", "color": "white" }); obj.val($("li:nth-child(" + itemIndex + ")").find("font").text()); }, function() { $(this).css({ "background": "white", "color": "black" }); } ); }); }; })(jQuery); getdata.ashx 复制代码代码如下:using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services; namespace table { /// <summary> /// $codebehindclassname$ 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class getData : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.Clear(); string value = GetResult(); context.Response.Write(value); context.Response.End(); } private string GetResult() { string result = string.Empty; result = @" [{""id"":""1"",""Code"":""1374123""}, {""id"":""2"",""Code"":""1374133""}, {""id"":""3"",""Code"":""1374143""}, {""id"":""4"",""Code"":""1374153""}, {""id"":""5"",""Code"":""1374163""}, {""id"":""6"",""Code"":""1374173""}, {""id"":""7"",""Code"":""1374183""}, {""id"":""8"",""Code"":""1374193""}, {""id"":""9"",""Code"":""1374213""}, {""id"":""10"",""Code"":""1374223""}, {""id"":""11"",""Code"":""1374233""}, {""id"":""12"",""Code"":""1374243""}, {""id"":""13"",""Code"":""1374253""}, {""id"":""14"",""Code"":""1374263""}, {""id"":""15"",""Code"":""1374273""}, {""id"":""16"",""Code"":""1374283""}, {""id"":""17"",""Code"":""1374293""}, {""id"":""18"",""Code"":""1374313""}, {""id"":""19"",""Code"":""1374323""}, {""id"":""20"",""Code"":""1374333""}, {""id"":""21"",""Code"":""1374343""}, {""id"":""22"",""Code"":""1374353""}, {""id"":""23"",""Code"":""1374363""}, {""id"":""24"",""Code"":""1374373""}, {""id"":""25"",""Code"":""1374383""}, {""id"":""26"",""Code"":""1374393""}, {""id"":""27"",""Code"":""1374403""}, {""id"":""28"",""Code"":""1374413""}, {""id"":""29"",""Code"":""1374423""}, {""id"":""30"",""Code"":""1374433""}, {""id"":""31"",""Code"":""1374443""}, {""id"":""32"",""Code"":""1374453""}, {""id"":""33"",""Code"":""1374463""}, {""id"":""34"",""Code"":""1374473""}, {""id"":""35"",""Code"":""1374483""}, {""id"":""36"",""Code"":""1374493""}]"; return result; } public bool IsReusable { get { return false; } } } }
2023-08-03 22:24:272

asp.net中回发是怎么回事?高手解答下,越详细越好,言简意赅容易明白的亦可,谢啦

asp.net中,在你初次加载页面时,页面会执行PageLoad事件,称之为首次加载,当你首次加载完页面之后,此时在页面中,如果有一个提交请求的按钮,用户点击了这个按钮,发送请求到服务端,这个时候,PageLoad会被按钮的请求再次执行,这个被二次执行的PageLoad称之为“回发”。
2023-08-03 22:24:363

C#使用HTML文件中的file文件上传,用C#代码接收上传文件

HttpFileCollection files = HttpContext.Current.Request.Files;//得到所有的FILE控件for (int i = 0; i < files.Count; i++){HttpPostedFile postedFile = files[i];//取得单个文件}
2023-08-03 22:24:539

在ASP.NET开发中的图书信息编辑页面中,我们使用DetailsView(id为dvBookList)控件展示图书数据信息,其

问题应该补充一下吧?
2023-08-03 22:25:532

visionpro未将对象引用设置到对象的实例

1、首先,所设置的变量为空值或没有取到值,一般出现在传递参数的时候出现这个问题,也会在使用DataGrid或gridview或datalist等数据控件时出现。2、设置控件名称与codebehind里面的没有对应。3、设置未用new初始化对象或者在程序中所引用的控件不存在。4、然后使用try..catch...finally捕捉错误,或直接用response.write()输出所取的变量值。5、查看代码中是否存在未初始化的变量,即可解决未将对象引用设置到对象的实例”的问题。
2023-08-03 22:26:001

(C#)WebService调用问题

要先生成webSerivce的程序集先,要不添加引用肯定出错
2023-08-03 22:26:071

web前端如何安全使用innerhtml、document.write以防止程式码嵌入

web前端如何安全使用inner、document.write以防止程式码嵌入 先对传入引数进行特殊符号替换,然后再进行write或赋值给innerHTML。 需要替换的符号主要有:单引号、双引号、小于号、大于号等。 替换成显示效果相同的编码即可。可以用 &#xxx;形式的编码,或者& lt ;这种特定编码。 web前端怎么防止程式码注入攻击 三种方式: 一,HTML防注入。 一般的注入都是在字串中加入了标签,用下JAVA程式码可以去掉这部分程式码。 程式码如下,自己封装成方法即可。 String msge = "asdasdasdasd <div id="f">asdfsdf"; System.out.println(msge); msge = msge.replace("&", "&"); msge = msge.replace("<", "<"); msge = msge.replace(" ", " "); msge = msge.replace(">", ">"); msge = msge.replace(""", """); msge = msge.replace(""", "&qpos;"); System.out.println(msge); 二、防SQL注入 最简单最容易的是限制使用者输入。 简单点的就是不允许使用者输入单引号 和 --,因为单引号号--在SQL中都是影响执行的。 但SQL注入是多方面的,防止的方法也有很多种。 1、位址列禁止特殊字元防SQL注入 把特殊字元(如and、or、"、")都禁止提交就可以防止注入了。 2、php过滤字串,防止SQL注入 批量过滤post,get敏感资料 $_GET = stripslashes_array($_GET); $_POST = stripslashes_array($_POST); 资料过滤函式 function stripslashes_array(&$array) { while(list($key,$var) = each($array)) { if ($key != "argc" && $key != "argv" && (strtoupper($key) != $key || "".intval($key) == "$key")) { if (is_string($var)) { $array[$key] = stripslashes($var); } if (is_array($var)) { $array[$key] = stripslashes_array($var); } } } return $array; } 3、替换HTML尾标签 function lib_replace_end_tag($str) { if (empty($str)) return false; $str = specialchars($str); $str = str_replace( "/", "", $str); $str = str_replace("\", "", $str); $str = str_replace(">", "", $str); $str = str_replace("<", "", $str); $str = str_replace("<SCRIPT>", "", $str); $str = str_replace("</SCRIPT>", "", $str); $str = str_replace("<script>", "", $str); $str = str_replace("</script>", "", $str); $str=str_replace("select","select",$str); $str=str_replace("join","join",$str); $str=str_replace("union","union",$str); $str=str_replace("where","where",$str); $str=str_replace("insert","insert",$str); $str=str_replace("delete","delete",$str); $str=str_replace("update","update",$str); $str=str_replace("like","like",$str); $str=str_replace("drop","drop",$str); $str=str_replace("create","create",$str); $str=str_replace("modify","modify",$str); $str=str_replace("rename","rename",$str); $str=str_replace("alter","alter",$str); $str=str_replace("cas","cast",$str); $str=str_replace("&","&",$str); $str=str_replace(">",">",$str); $str=str_replace("<","<",$str); $str=str_replace(" ",chr(32),$str); $str=str_replace(" ",chr(9),$str); $str=str_replace(" ",chr(9),$str); $str=str_replace("&",chr(34),$str); $str=str_replace(""",chr(39),$str); $str=str_replace("<br />",chr(13),$str); $str=str_replace("""",""",$str); $str=str_replace("css",""",$str); $str=str_replace("CSS",""",$str); return $str; } 三、专业的事情交给专业的工具去做。 安装安全软体。例如,在伺服器中安装“伺服器安全狗”,可以设定防注入,防攻击的设定,只要设定好安全规则,就可以遮蔽大多数攻击入侵。 如何安全使用免费wifi防止网银被盗 其实大多WIFI都是安全的,有些连线WIFI后网银被盗了,是因为他们连线的本身是黑客提前建立的虚假WIFI,所以连线后被骗子读取了个人资讯,导致自己的网银被盗,我们想要安全的连线WIFI,首先我们要准确识别这个WIFI是否是商家提供的,另外最好在自己手机上装安全软体,例如腾讯手机管家,它可以自动检测当前网路环境是否安全,这样就可以避免连线到黑客建立的虚假WIFI了。 如何安全使用QQ邮箱,防止隐私泄露 不接受垃圾档案,下载个 QQ安全管家,登陆 QQ 邮箱需要动态验证码或者是在Q安全管家的扫一下二维码登陆比较安全一点 前端如何防止恶意注入 通过js程式码过滤传入后台的资料,加入过滤器filter的使用等 如何安全使用PQMagic? 想要安全的使用分割槽软体,首先要非常熟悉该工具是使用方法,每个功能是干嘛用的一定要弄清楚,在使用之前自己也要有一个准确的目标,自己该分几个区,每个区的大小是多少等等. PQMagic可以说是一款非常优秀的分割槽软体,建议你去网上找找这方面的教程,有很多,一学就会,祝您好运! 如何安全使用Wifi 腾讯WiFi管家是腾讯公司旗下的的一款免费WiFi管理软体,支援上亿公共WiFi热点,无需输入密码就可一键连线,并通过腾讯五星WiFi标准对这些热点进行全方位的安全、连线速度、网路质量等进行全面评估,确保无僵尸、风险、虚假WiFi。"腾讯WiFi管家"的免费WiFi热点主要为公共WiFi、总数超过1亿,无论您在哪都可以搜寻附近的免费WiFi,并一键连线上网。而且自带wifi安全扫描功能,自动排除僵尸、钓鱼、盗号、木马等病毒,全方位保护您的网路安全。 Ajax如何安全使用 ajax只是一种请求方式,安全不安全是在服务端。并不在他请求的方式。 容易犯的错误是容易被假冒身份。因为普通的request会把cookie一起传送给伺服器,但是ajax用的xmlrequest不会自动和cookie一起传送,所以如果不记着在每次处理xhr的时候手动验证cookie的话,很有可能被坏人假冒已经登陆的使用者的身份。 如何安全使用fineui editor View Raw Code 当前路径:FineUI.Examples/form/editor.aspx <%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true" CodeBehind="editor.aspx.cs" Inherits="FineUI.Examples.form.editor" %> <!DOCTYPE > <> <head runat="server"> <title></title> <link href="../css/main.css" rel="stylesheet" type=text/css /> </head> <body> <form id="form1" runat="server"> <x:PageManager ID="PageManager1" runat="server" /> <x:SimpleForm ID="SimpleForm1" BodyPadding="5px" EnableBackgroundColor="true" runat="server" Title="表单" Width="750px"> <Items> <x:HtmlEditor runat="server" Label="文字编辑器" ID="HtmlEditor1" Height="250px"> </x:HtmlEditor> <x:TextArea ID="TextArea1" Label="多行文字框" runat="server" Height="150px"> </x:TextArea> <x:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="获取 HTML 编辑器的内容" CssClass="inline"> </x:Button> <x:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="设定 HTML 编辑器的内容"> </x:Button> </Items> </x:SimpleForm> </form> </body> </>
2023-08-03 22:26:141

C#中未将对象引用设置到对象的实例是什么意思?

用NEW呗.
2023-08-03 22:26:229

这个肯定是你复制别人编译后的代码,才出现的
2023-08-03 22:27:202

这实说代码是Cshap,后至在后边的那个。CS文件中
2023-08-03 22:27:282

asp 网页包含附加到母版页时无效的标记

我刚好也遇到了这个问题。。。⊙﹏⊙b汗,查了下资料说:必须为Web 内容窗体,否则会出现错误提示:网页包含附加到母版页时无效的标记。但是肯定是内容页的啊,我继续在找资料。。。
2023-08-03 22:27:352

怎么用net编译cs文件

操作如下:打开命令窗口->输入cmd到控制台->cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322转到vs.net安装的该目录下->执行csc命令csc /target:library File.cs->在该目录下产生一个对应名字的.dll文件(前提:把.cs文件放到C:WINDOWSMicrosoft.NETFrameworkv1.1.4322目录下)csc命令的方式很多,请参考以下,------------------------------------译 File.cs 以产生 File.exe: csc File.cs 编译 File.cs 以产生 File.dll: csc /target:library File.cs编译 File.cs 并创建 My.exe: csc /out:My.exe File.cs通过使用优化和定义 DEBUG 符号,编译当前目录中所有的 C# 文件。输出为 File2.exe: csc /define:DEBUG /optimize /out:File2.exe *.cs编译当前目录中所有的 C# 文件,以产生 File2.dll 的调试版本。不显示任何徽标和警告: csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs将当前目录中所有的 C# 文件编译为 Something.xyz(一个 DLL): csc /target:library /out:Something.xyz *.cs 编译 File.cs 以产生 File.dll: csc /target:library File.cs这个就是我们使用最多的一个命令,其实可以简单的写成csc /t:library File.cs,另外的一个写法是csc /out:mycodebehind.dll /t:library mycodebehind.cs,这个可以自己指定输出的文件名。csc /out:mycodebehind.dll /t:library mycodebehind.cs mycodebehind2.cs,这个的作用是把两个cs文件装到一个.dll文件里。。。
2023-08-03 22:27:451

asp.net当我将一页面的内容复制到另外一个页面时(内容相似,只是功能不同),运行时报错?

ClassManage.aspx.cs里有 btnShow_Click 方法吗? 先确认下
2023-08-03 22:27:534

asp.net中报错:“未能加载类型form1”怎么解决

把CodeBehind改成Src试试 你是在vs下直接运行的还是在IIS下?
2023-08-03 22:28:013

c#同一窗体上如何让一控件不触发其他控件的事件(例如leave事件)

过滤下就可以了啊。。。if(((contrl)sender) == 某控件){return;}
2023-08-03 22:28:093

介绍一下

在VS 2005里面应该是<script type="text/C#"></script>这个实在是很少用你看看这个吧http://dev.21tx.com/2004/10/10/12133.html
2023-08-03 22:28:205

多文件上传思路

vb.net????你去csdn看看!或者在baidu上面找.net的专家!在baidu上传图片(相册)的时候,你可以传3张图片!但是他有三个按钮,也就是说他写了三个事件!其实这个问题不是很难 !你的意思是:假如有三个FileUpload,但是只要提交一个按钮,就可以把三张图片传上去吗??如果是这样的话,你可以把路径保存为字符串,然后在每一个地址后面加一个,这样在做判断,如果检测到了一个,也就是一个url,这样就可以了。
2023-08-03 22:28:383

asp.net怎样在页面中添加后台的引用

通过page指令。如:注解:GetStation.aspx.cs为后台文件名,TestPro.wyn.GetStation为后台文件命名空间<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GetStation.aspx.cs" Inherits="TestPro.wyn.GetStation" %>
2023-08-03 22:28:581

ASP.NET3.5网站开发实例教程?

ASP.NET3.5网站开发实例教程?首先运行visualstudio2015进入vs2015主画面找到左上角的文件依次找到文件->新建->项目在打开的新建项目窗口中,找到我们的framwork版本我们选择ASP.NET3.5选择ASP.NET3.5后,在左侧找到web项目选择ASP.NET空web应用程序接着定义我们的应用程序名称和位置设定完成后,选择确定,选择确定后,就会根据我们的设定,生成应用程式所需的文件和框架目录结构见下图因为我们是创建的空应用程序所有整个目录结构很简单我们可以右键单击我们的应用程序,选择属性来确认我们当前的框架是否使用的是ASP.NET3.5接着我们就可以开发我们的web应用程序了我们新建一个aspx页面简单的填入以下内容:<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="WebForm1.aspx.cs"Inherits="WebApplication1.WebForm1"%>撰写代码完成后,保存并运行就可以了这样一个简单的web应用程序实例就创建完成了
2023-08-03 22:29:051

asp.net怎么赋值变量

ArrayList arr = new ArrayList(); SqlDataAdapter sda = new SqlDataAdapter("select * from tb_bd where username=:username", strcon);OracleParameter param = new OracleParameter();param = new OracleParameter(":username", OracleType.Char, 4); param.Value = username; arr.Add(param);
2023-08-03 22:29:224