mikebai.com

  • Home
  • dev
  • DotNET
  • M365
  • 搞笑
  • 杂七杂八
  • FocusDict
DotNET
DotNET

Calling ASP.Net validators from JavaScript

There are situations when we want to call Asp.net validatiors form JavaScript. One such situation is when we want to close a pop up window on button click using window.close(). But before closing the window using JavaScript, we want to validate the data written in the controls of the window. It possible to call Asp.net validators from JavaScript. The following code shows a portion of asp.net page which includes one standard .net required field validator and one regular expression validator. <table> <tr> <td><asp:Label ID=”lbl1″ runat=”server” Text=”Please enter a digit”></asp:Label></td> <td><asp:TextBox ID=”txtbox1″ runat=”server”></asp:TextBox></td> <td><asp:RequiredFieldValidator ID=”valReq” ControlToValidate=”txtbox1″ runat=”server” ErrorMessage=”*” Display=”Dynamic”></asp:RequiredFieldValidator><asp:RegularExpressionValidator ID=”valreg” ControlToValidate=”txtbox1″ runat=”server” ErrorMessage=”Not valid character” ValidationExpression=”[0-9]“></asp:RegularExpressionValidator></td> </tr> <tr> <td></td><td><asp:Button ID=”btn1″ runat=”server” Text=”Submit” OnClientClick=”performCheck()”/></td> <td></td> </tr> </table> In design mode, it looks as below View in design mode Now we want to make sure that .net validators get fired up on “Submit” button click before closing the window using javascript window.close(). In our example, we have a text box where we expect a single digit before closing the window. All we have to do to fire up .net validators is to call “Page_ClientValidate()” function.  The following JavaScript code shows how “Page_ClientValidate()” function can be used before closeing window. <script type=”text/javascript” language=”javascript”> function performCheck(){ if(Page_ClientValidate()){ window.close(); } }</script> Now, if the Submit button is clicked leaving the text box empty, the required field validator will fire up as shown in the below screen shot. Required field validotor fires up If any thing is written in other than a single digit, we will get the following output. Regular Expression Validator fires up

2010-03-12 0comments 93hotness 0likes mikebai Read all
DotNET

验证控件笔记

1)from:http://dev.csdn.net/article/56/56880.shtm  在asp.net 1.1中,对于验证类控件,在使用时,遇到有的不需要验证的控件时,是十分麻烦的,就是说不可能有选择验证某些控件,而在asp.net 2.0中,新增加了validationgroup属性,可以指定验证某些控件,例子如下: <html> <body>      <form runat=“server”>           <asp:textbox id=“TextBox1” runat=“server”/>           <asp:requiredfieldvalidator ValidationGroup=“Group1”                                                        ErrorText=“Need to Fill in Value!”                                                        ControlToValidate=“TextBox1”                                                        runat=“server”/>               <asp:textbox id=“TextBox2” runat=“server”/>             <asp:requiredfieldvalidator ValidationGroup=“Group2”                                                          ErrorText=“Need to Fill in Value!”                                                

2010-03-11 0comments 94hotness 0likes mikebai Read all
DotNET

asp.net2.0 with c#2.0 学习笔记之validation控件

概述 validation 控件主要是为了验证用户输入内容的。而用户容易犯的错误是: 1、忽略重要的内容,让文本框空着 2、为了应付,瞎填,乱填就想提交 3、用户想认真填写,但是填写的内容不符合格式要求。 4、别用用心之人,会尝试输入一些不安全的代码。 .net2.0提供了5种validation 控件来解决以上问题: 1、RequiredFieldValidator           验证输入内容是否为空。 2、RangeValidator                        验证输入内容是否为特定范围内的的数值,字母或日期 3、CompareValidator                   验证当期输入框内的内容是否和另外一个输入控件内容相匹配 4、RegularExpressionValidator   验证输入内容是否满足特定的正则表达式规则 5、CustomValidator                     调用编程者自己定义的验证程序 任何一个控件都可以绑定到一个输入控件上,一个输入控件可以同时跟几个验证控件绑定。 需要注意的是:当你在使用控件RangeValidator,CompareValidator或RegularExpressionValidator的时候,验证过程都会将输入内容为空看做是正确的,并通过验证。如果你不想这样,只能加一个RequiredFieldValidator控件,保证输入内容不是空的。 和其他web控件一样,你添加一个验证控件到表单中的时候也用 <asp:ControlClassName /> 顺便提一下,还有个验证控件:ValidationSummary   它不是真正去验证什么,而是通过它可以提供一个列表来列出整个页面的所有验证错误信息。 工作过程 当用户填好表单后就单击按钮进行提交。而每个按钮都有个属性:CauseValidation ,它的值可以是true或false. 当按钮的CauseValidation属性的值是false的时候,用户单击按钮后不会进行任何验证,数据直接提交到服务器。 当然了,当CauseValidation的属性值为true的时候(默认值),用户单击这个按钮asp.net会自动地去验证这个页面的所有验证控件。当任何一个验证控件验证的结果出现没有通过验证的状况时,asp.net会阻止提交后的处理程序,并显示出错误信息。 客户端的验证 在许多最新的浏览器中(包括IE5.0及以后的版本,Firefox),asp.net会自动在客户端页面中插入javascript代码去验证,在进行数据提交之前就会进行验证,并提示错误信息。 不过,即使在客户端验证都通过的情况下,在服务端仍然进行验证过程。这是为了提防某些人将客户端页面进行修改,删除验证javascript代码后进行提交。 Validator 类 validation 控件属于 System.Web.UI.WebControls 命名空间(namespace)继承于 BaseValidator 类。 BaseValidator 的属性如下: ControlToValidate       指定该控件所要验证的输入控件id ErroMessage               验证没有通过的时候,显示的错误信息 ForeColor                    错误信息的显示颜色 Display                        错误信息的显示方式,其值有三个:Dynamic 或 Static,None 中文意思为动态和静态, 所谓动态就是隐藏的错误信息并不占位,当发生验证失败的时候会出现错误信息。而静态的,就是错误信息在没有显示的时候也占位,只是显示与不显示进行转换而已。两者的区别就是错误信息在显示前占位与否。None,表示无论是否通过了验证与否,都不显示错误信息。 IsValid     只读,其值为true或false反映该控件是否成功通过验证。 Enabled 当值为false的时候,该验证控件不起作用,默认为true. EnableClientSideScript   当设置为true,asp.net会自动在客户端插入相应的javascript和DHTML代码进行客户端的验证,前提是客户端浏览器要支持。 当使用一个验证控件的时候,你只需要对ControlToValidate 和ErroMessage属性进行相关设置即可。当然对五种不同的验证控件,你需要注意它们需要一些不同额外的设置: RequiredFieldValidator      不需要 RangeValidator                  MaximumValue,MinimumValue,Type CompareValidator              ControlToCompare,Operator,Type,ValueToCompare RegularExpressionValidator   ValidationExpression CustomValidator                 ClientValidationFunction,ServerValidateEvent 由于各验证控件会产生错误信息,错误信息需要占位,当我们在排版的时候没有那么多的地方 放错误信息的时候,我们又需要怎么做呢? 幸好有个控件ValidationSummary可以解决这个问题: 将<asp:ValidationSummary id="Errors" runat="server" /> 放在适当的位置,当验证的时候,它将所有的错误信息依次做列表显示。 ValidationSummary也拥有很多属性: HeaderText          可以理解为标题文本,比如设置为“本次产生如下错误:” ForeColor             文本的颜色 DisplayMode     &n

2010-03-11 0comments 96hotness 0likes mikebai Read all
DotNET

vs历史记录清除

2008-09-10 10:481:建立一个txt文件,复制下面的代码,另存为.bat后缀,双击 再次打开VS 即可清除,内置代码如下:(推荐) @echo off@REG Delete HKCU\Software\Microsoft\VisualStudio\8.0\FileMRUList /va /f@REG Delete HKCU\Software\Microsoft\VisualStudio\8.0\ProjectMRUList /va /f 2:手动在注册表中将其清除运行 run 注册表 regedit 1)删除最近打开的文件HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\FileMRUList ,在右边删除相应键值。2)删除最近打开的项目HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\ProjectMRUList,在右边删除相应键值。

2010-03-11 0comments 97hotness 0likes mikebai Read all
DotNET

C#中实现文件下载的四种方法总结

  using System;  using System.Data;  using System.Configuration;  using System.Web;  using System.Web.Security;  using System.Web.UI;  using System.Web.UI.WebControls;  using System.Web.UI.WebControls.WebParts;  using System.Web.UI.HtmlControls;  using System.IO;   public partial class _Default : System.Web.UI.Page  {  protected void Page_Load(object sender, EventArgs e)  {   }  //TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e)  {    Response.ContentType = "application/x-zip-compressed";  Response.AddHeader("Content-Disposition", "attachment;filename=z.zip");  string filename = Server.MapPath("DownLoad/z.zip");  Response.TransmitFile(filename);  }     //WriteFile实现下载 protected void Button2_Click(object sender, EventArgs e)  {    string fileName ="asd.txt";//客户端保存的文件名  string filePath=Server.MapPath("DownLoad/aaa.txt");//路径   FileInfo fileInfo = new FileInfo(filePath);  Response.Clear();  Response.ClearContent();  Response.ClearHeaders();  Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);  Response.AddHeader("Content-Length", fileInfo.Length.ToString());  Response.AddHeader(

2010-03-10 0comments 96hotness 0likes mikebai Read all
DotNET

excel note

http://forums.asp.net/p/1222903/2189537.aspxhttp://www.experts-exchange.com/Programming/Languages/.NET/Visual_CSharp/Q_23209358.html   http://www.eggheadcafe.com/community/aspnet/2/10052679/how-to-export-treeview-da.aspx http://swik.net/XML/del.icio.us%2Ftag%2Fxml/C%23+-+TreeView+Export+To+Xml+OR+Import+from+XMl/dq8zdhttp://forums.asp.net/t/1214938.aspx   http://aspalliance.com/articleViewer.aspx?aId=1http://steveorr.net/articles/ExportPanel.aspx http://dflorence25.blogspot.com/ http://www.codeproject.com/KB/cpp/treeviewtoxml.aspx   pa3kx32sa   http://www.codeproject.com/KB/tree/DropDownTreeView.aspx http://www.codeproject.com/KB/cpp/TreeView_Serializer.aspx     http://www.winu.cn/space-14160-do-blog-id-7119.html  

2010-03-08 0comments 101hotness 0likes mikebai Read all
DotNET

浅谈水晶报表在ASP.NET中的一种灵活应用

浅谈水晶报表在ASP.NET中的一种灵活应用 使用水晶报表的强大功能来实现应用程序的统计分析及打印导出等功能,是微软平台上进行.NET应用程序开发报表的一种不错的选择。水晶报表在设计、开发、配置以及部署上,还是会给初学者带来一定的困扰的。那么,是否存在一种相对比较简单而且易用的方式来进行水晶报表的设计、开发、配置以及部署呢?本文将提供一种比较简单且相对灵活的方法。 本文将包含以下内容: Crystal Reports的另类非对象模式数据绑定 水晶报表的简单模式部署 P.S. 本文中描述到的Crystal Reports为Crystal Reports for Visual Studio .NET,原则上该版本是runtime free授权,for unlimited user的。VS IDE版本为2008,Crystal Reports版本为10 Crystal Reports的另类非对象模式数据绑定水晶报表绑定数据的模式有很多种,其中包括使用DataSet、DataReader及ObjectCollection等。在某个特定的系统项目中,我们多数通过指定的业务数据库来提供对报表数据的支持。本文将主要描述一种非数据库数据绑定的变通模式,通过这种模式进行绑定的报表,可以不用设置其数据库验证参数(DBLogon)的相关信息,具体的数据源可以来源于数据库,也可以来源于xml文件等其他半结构化数据。 在VS IDE项目的Solution Explorer中,建立存放报表文件的文件夹,如ReprotFilesFolder 用鼠标右键点击新建的文件夹,选择添加新项(Add New Item...) 选择“XML Schema”,将文件命名为Demo.xsd 用DataSet Editor打开该Schema文件,点击“Ctrl+Alt+S”,打开“Server Explorer”,找到当前项目使用的数据库连接,将报表展示涉及到的数据表拖拽到设计区域 推拽的表可以是存在键值关系的表,也可以是毫无关系的表,甚至通过存储过程建立的临时表,保存该xsd文件 用鼠标右键点击新建的文件夹,选择添加新项(Add New Item...) 选择Crystal Report,将报表文件命名为Demo.rpt,点击添加(Add) 在打开的水晶报表向导窗口中选择“使用报表向导”,点击确定 在报表向导的数据向导页中,选择“创建新连接-数据库文件” 点击数据库文件前的“+”,将弹出选择数据文件窗口,找到刚才创建的Demo.xsd文件,并点击“打开” 此时,我们刚添加到Demo.xsd中的两个数据表将出现在“数据文件”节点的子节点下,选中数据表,点击“>”按钮,将表添加到“已选择表”列表中 点击“下一步”,可以为表之间添加隐式的键值关系 点击完成,将生成一张空白的报表 根据实际的业务情况设计符合要求的报表,并保存报表文件,例如下图 设计工作到此告一段落,下面将进行数据的绑定。 新建一个WebForm页面,将CrystalReportViewer添加到页面中,如下图所示 在后台页面中首先引用Crystal Reports的程序集using CrystalDecisions.CrystalReports.Engine;using CrystalDecisions.Shared; 定义变量private ReportDocument reportDocument; 添加自定义方法 /// <summary>/// 初始化报表/// </summary>private void ConfigureCrystalReports(){//当前业务的报表打印文件string RPTFile = "";//当前业务的报表打印数据集DataSet ds = null; #region 获取报表打印文件if (Session["rf"] == null){RPTFile = Server.MapPath("Demo.rpt");Session["rf"] = RPTFile;}elseRPTFile = Session["rf"].ToString();#endregion #region 获取当前业务的报表打印数据if (Session["pd"] == null){ds = new DataSet();string sql = "";sql = "select * from SalesMaster where BItemSerialNumber='0802280001'";DataSet masterDs = 填充主表数据//将主表添加到报表数据集中ds.Merge(masterDs);//利用同样的方法添加子表或其他的表,甚至可以添加表和表之间的关系//上述方法也可以从其他数据源读入数据,包括Access数据库、xml数据等Session["pd"] = ds;}elseds = (DataSet)Session["pd"];#endregion if (Session["reportDocument"] == null){reportDocument = new ReportDocument();reportDocument.Load(RPTFile);reportDocument.SetDataSource(ds);Session["reportDocument"] = reportDocument;}elsereportDocument = (ReportDocument)Session["reportDocument"];ReportViewer.ReportSource = reportDocument;} 在页面的Page_Load方法中添加Response.Expires = -1; 添加页面初始化方法 /// <summary>/// 页面初始化事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void Page_Init(object sender, EventArgs e){ConfigureCrystalReports();} 至此,报表的数据绑定及显示工作完成。编译项目后,在浏览器中可以查看报表效果。此种方法的灵活性在于 完成后,完全可以删除.xsd的Schema文件而运行,或将.xsd文件移出项目。 数据的读入,不论来自SQL Server、Access还

2010-03-08 0comments 96hotness 0likes mikebai Read all
DotNET

小议SQL Server主键和自动编号问题

小议SQL Server主键和自动编号问题  所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。  当然,其它字段可以辅助我们在执行这些操作时消除共享冲突,不过就不在这里讨论了。主键除了上述作用外,常常与外键构成参照完整性约束,防止出现数据不一致。所以数据库在设计时,主键起到了很重要的作用。  常见的数据库主键选取方式有:  ◆自动增长字段  ◆手动增长字段  ◆UniqueIdentifier  ◆“COMB(Combine)”类型  一、自动增长型字段  很多数据库设计者喜欢使用自动增长型字段,因为它使用简单。自动增长型字段允许我们在向数据库添加数据时,不考虑主键的取值,记录插入后,数据库系统会自动为其分配一个值,确保绝对不会出现重复。如果使用SQL Server数据库的话,我们还可以在记录插入后使用@@IDENTITY全局变量获取系统分配的主键键值。  尽管自动增长型字段会省掉我们很多繁琐的工作,但使用它也存在潜在的问题,那就是在数据缓冲模式下,很难预先填写主键与外键的值。假设有两张表:  Order(OrderID, OrderDate)  OrderDetial(OrderID, LineNum, ProductID, Price)  Order 表中的OrderID是自动增长型的字段。现在需要我们录入一张订单,包括在Order表中插入一条记录以及在OrderDetail表中插入若干条记录。因为Order表中的OrderID是自动增长型的字段,那么我们在记录正式插入到数据库之前无法事先得知它的取值,只有在更新后才能知道数据库为它分配的是什么值。这会造成以下矛盾发生:  首先,为了能在 OrderDetail的OrderID字段中添入正确的值,必须先更新Order表以获取到系统为其分配的OrderID值,然后再用这个 OrderID填充OrderDetail表。最后更新OderDetail表。但是,为了确保数据的一致性,Order与OrderDetail在更新时必须在事务保护下同时进行,即确保两表同时更行成功。  听棠.NET指出:主档放在事务中提交时,通过@@IDENTITY 就可以取到生成值的,因此可以传给明细当外键用,而且在事务发生错误回滚时,主档记录也会被回滚取消的。  吕震宇补充:使用自动增长字段会增加网络的roundTrip。尽管可以使用@@IDENTITY取得主键的值,但在更新过程中,不得不增加一次数据往返(以C/S结构为例):  1、客户端发送开始事务命令  2、客户端提交主表更新  3、服务器返回@@IDENTITY  4、客户端根据返回的主键更新从表缓冲  5、客户端将从表提交服务器更新  6、客户端提交事务  在这里多了一次往返就会增加了事务处理的时间。降低并发性能。  如果不用自动增长型字段,将是以下情景:  1、客户端发送开始事务命令  2、客户端提交主表更新  3、客户端提交从表更新  4、客户端提交事务  因此我不赞成使用自动增长型字段作为主键与外键链接的纽带。  除此之外,当我们需要在多个数据库间进行数据的复制时(SQL Server的数据分发、订阅机制允许我们进行库间的数据复制操作),自动增长型字段可能造成数据合并时的主键冲突。设想一个数据库中的Order表向另一个库中的Order表复制数据库时,OrderID到底该不该自动增长呢?  ADO.NET允许我们在 DataSet中将某一个字段设置为自动增长型字段,但千万记住,这个自动增长字段仅仅是个占位符而已,当数据库进行更新时,数据库生成的值会自动取代 ADO.NET分配的值。所以为了防止用户产生误解,建议大家将ADO.NET中的自动增长初始值以及增量都设置成-1。此外,在ADO.NET中,我们可以为两张表建立DataRelation,这样存在级联关系的两张表更新时,一张表更新后另外一张表对应键的值也会自动发生变化,这会大大减少了我们对存在级联关系的两表间更新时自动增长型字段带来的麻烦。  二、手动增长型字段  既然自动增长型字段会带来如此的麻烦,我们不妨考虑使用手动增长型的字段,也就是说主键的值需要自己维护,通常情况下需要建立一张单独的表存储当前主键键值。还用上面的例子来说,这次我们新建一张表叫IntKey,包含两个字段,KeyName以及KeyValue。就像一个HashTable,给一个 KeyName,就可以知道目前的KeyValue是什么,然后手工实现键值数据递增。在SQL Server中可以编写这样一个存储过程,让取键值的过程自动进行。代码如下:CREATE PROCEDURE [GetKey]  @KeyName char(10), @KeyValue int OUTPUT AS UPDATE IntKey SET @KeyValue = KeyValue = KeyValue + 1 WHERE KeyName = @KeyName GO  这样,通过调用存储过程,我们可以获得最新键值,确保不会出现重复。若将OrderID字段设置为手动增长型字段,我们的程序可以由以下几步来实现:首先调用存储过程,获得一个OrderID,然后使用这个OrderID填充Order表与OrderDetail表,最后在事务保护下对两表进行更新。  使用手动增长型字段作为主键在进行数据库间数据复制时,可以确保数据合并过程中不会出现键值冲突,只要我们为不同的数据库分配不同的主键取值段就行了。但是,使用手动增长型字段会增加网络的RoundTrip,我们必须通过增加一次数据库访问来获取当前主键键值,这会增加网络和数据库的负载,当处于一个低速或断开的网络环境中时,这种做法会有很大的弊端。同时,手工维护主键还要考虑并发冲突等种种因素,这更会增加系统的复杂程度。  三、使用UniqueIdentifier  SQL Server为我们提供了UniqueIdentifier数据类型,并提供了一个生成函数NEWID( ),使用NEWID( )可以生成一个唯一的UniqueIdentifier。UniqueIdentifier在数据库中占用16个字节,出现重复的概率非常小,以至于可以认为是0。我们经常从注册表中看到类似{45F0EB02-0727-4F2E-AAB5-E8AEDEE0CEC5}的东西实际上就是一个UniqueIdentifier,Windows用它来做COM组件以及接口的标识,防止出现重复。在.NET里管UniqueIdentifier称之为GUID(Global Unique Identifier)。在C#中可以使用如下命令生成一个GUID:Guid u = System.Guid.NewGuid();   对于上面提到的Order与OrderDetail的程序,如果选用UniqueIdentifier作为主键的话,我们完全可以避免上面提到的增加网络 RoundTrip的问题。通过程序直接生成GUID填充主键,不用考虑是否会出现重复。  UniqueIdentifier 字段也存在严重的缺陷:首先,它的长度是16字节,是整数的4倍长,会占用大量存储空间。更为严重的是,UniqueIdentifier的生成毫无规律可言,要想在上面建立索引(绝大多数数据库在主键上都有索引)是一个非常耗时的操作。有人做过实验,插入同样的数据量,使用 UniqueIdentifier型数据做主键要比使用Integer型数据慢,所以,出于效率考虑,尽可能避免使用UniqueIdentifier型数据库作为主键键值。  四、使用“COMB(Combine)”类型  既然上面三种主键类型选取策略都存在各自的缺点,那么到底有没有好的办法加以解决呢?答案是肯定的。通过使用COMB类型(数据库中没有COMB类型,它是Jimmy Nilsson在他的“The Cost of GUIDs as Primary Keys”一文中设计出来的),可以在三者之间找到一个很好的平衡点。  COMB 数据类型的基本设计思路是这样的:既然UniqueIdentifier数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么我们能不能通过组合的方式,保留UniqueIdentifier的前10个字节,用后6个字节表示GUID生成的时间(DateTime),这样我们将时间信息与 UniqueIdentifier组合起来,在保留UniqueIdentifier的唯一性的同时增加了有序性,以此来提高索引效率。也许有人会担心 UniqueIdentifier减少到10字节会造成数据出现重复,其实不用担心,后6字节的时间精度可以达到1/300秒,两个COMB类型数据完全相同的可能性是在这1/300秒内生成的两个GUID前10个字节完全相同,这几乎是不可能的!在SQL Server中用SQL命令将这一思路实现出来便是:DECLARE @aGuid UNIQUEIDENTIFI

2010-03-02 0comments 95hotness 0likes mikebai Read all
DotNET

C#判断文件编码的类(仅常用的几种)

public class EncodingType    //编码问题目前为止,基本上没人解决,就连windows的IE的自动识别有时还识别错编码呢。--yongfa365    //如果文件有BOM则判断,如果没有就用系统默认编码,缺点:没有BOM的非系统编码文件会显示乱码。    //调用方法: EncodingType.GetType(filename)    //来源:http://blog.csdn.net/listlofusage/archive/2007/02/10/1506900.aspx    {        public static System.Text.Encoding GetType(string FILE_NAME)        {            FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read);            System.Text.Encoding r = GetType(fs);            fs.Close();            return r;        }        public static System.Text.Encoding GetType(FileStream fs)        {            /*byte[] Unicode=new byte[]{0xFF,0xFE};           byte[] UnicodeBIG=new byte[]{0xFE,0xFF};           byte[] UTF8=new byte[]{0xEF,0xBB,0xBF};*/              BinaryReader r = new BinaryReader(fs, System.Text.Encoding.Default);            byte[] ss = r.ReadBytes(3);            r.Close();            //编码类型 Coding=编码类型.ASCII;            if (ss[0] >= 0xEF)            {                if (ss[0] == 0xEF && ss[1] == 0xBB && ss[2] == 0xBF)                {                   &

2010-02-26 0comments 94hotness 0likes mikebai Read all
DotNET

我的笔记

  年龄检查: <asp:RegularExpressionValidator ID="RegularExpressionValidator1" ControlToValidate="txtAge"                    runat="server" ErrorMessage="无效年龄" ValidationExpression="^[0]{1}[1-9]{1}|[1-9]{1}[0-9]{0,1}$"></asp:RegularExpressionValidator>

2010-02-25 0comments 94hotness 0likes mikebai Read all
1…7891011…16

Recent Posts

  • c# winform适配高dpi
  • com.microsoft.sqlserver.jdbc.SQLServerException “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server建立安全连接
  • java -cp 用法介绍
  • HTML 容器元素
  • MVC的cshtml的介绍

Recent Comments

No comments to show.

COPYRIGHT © 2025 mikebai.com. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang