View Code
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;
using System.Net;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using HtmlAgilityPack;
namespace asp.net技术点测试
public partial class _Default : System.Web.UI.Page
//HtmlAgilityPack.dll
//http://blog.cnfol.com/jldgold
protected string aa;
protected void Page_Load(object sender, EventArgs e)
//HttpWebRequest httpWebRequest = WebRequest.Create(@"http://blog.cnfol.com/jldgold/list") as HttpWebRequest;
//HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
//Stream stream = httpWebResponse.GetResponseStream();
//StreamReader reader = new StreamReader(stream, Encoding.UTF8);
//string s = reader.ReadToEnd();
//reader.Close();
//stream.Close();
//httpWebResponse.Close();
//HtmlDocument htmlDoc = new HtmlDocument();
//htmlDoc.LoadHtml(s);
//HtmlNodeCollection anchors = htmlDoc.DocumentNode.SelectNodes(@"//a");
//foreach (HtmlNode anchor in anchors)
// Regex reg = new Regex("景良东:");
// if (reg.Matches(anchor.InnerHtml).Count == 0)
// {
// }
// else
// {
// Response.Write(anchor.OuterHtml + "<br/>");
// }
//Response.End();
Response.Write(GainLink("http://blog.cnfol.com/jldgold/list","景良东:"));
Response.End();
/// <summary>
/// 获取网页上自己想要的链接
/// </summary>
/// <param name="link">获取网页上的链接的网页地址</param>
/// <param name="regexstr">正则匹配自己想要的链接所共有包含的内容</param>
/// <returns>返回链接集合</returns>
public string GainLink(string link, string regexstr)
String str="";
HttpWebRequest httpWebRequest = WebRequest.Create(link) as HttpWebRequest;
HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
Stream stream = httpWebResponse.GetResponseStream();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
string s = reader.ReadToEnd();
reader.Close();
stream.Close();
httpWebResponse.Close();
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(s);
HtmlNodeCollection anchors = htmlDoc.DocumentNode.SelectNodes(@"//a");
foreach (HtmlNode anchor in anchors)
Regex reg = new Regex(regexstr);
if (reg.Matches(anchor.InnerHtml).Count == 0)
str += anchor.OuterHtml+"</br>";
return str;
5.ckedit、ckfinder的使用。。
View Code
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script src="ckeditor/ckeditor.js" type="text/javascript"></script>
<script src="ckfinder/ckfinder.js" type="text/javascript"></script>
</head>
<form id="form1" runat="server">
<asp:TextBox ID="txtcontent" runat="server" TextMode="MultiLine" Height="550px" Width="100%"></asp:TextBox>
<script type="text/javascript">
var editor = CKEDITOR.replace('<%= txtcontent.ClientID %>');
CKFinder.setupCKEditor(editor, '../ckfinder/');
</script>
</form>
</body>
</html>
View Code
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="图片延时加载._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">
<title>Lazy Load Enabled</title>
<script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>
</head>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> <!--备注,必须有滚滚动条出现,才能有延时加载效果。所以这里加了一对换行符,为了获得滚动条-->
<img lazyload="img/bmw_m1_hood.jpg?1277878639" /><br />
<img lazyload="img/bmw_m1_side.jpg?1277878639" /><br />
<img lazyload="img/viper_1.jpg?1277878639" /><br />
<img lazyload="img/viper_corner.jpg?1277878639" /><br />
<img lazyload="img/bmw_m3_gt.jpg?1277878639" /><br />
<img lazyload="img/corvette_pitstop.jpg?1277878639" /><br />
<script type="text/javascript" src="Scripts/LazeLoad.js"></script> <!--这里是需要下载添加的js-->
<script type="text/javascript">
lazyLoad.Run();
</script>
</body>
</html>
7.无刷新图片预览、上传
View Code
<html xmlns="http://www.w3.org/1999/xhtml">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>图片预览效果</title>
<script src="js/CJL.0.1.min.js"></script>
<script src="js/ImagePreview.js"></script>
<script src="js/jquery-1.5.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
<style>
.perview {width:800px;background:#fff;font-size:12px; border-collapse:collapse; margin:auto; padding:auto;}
.perview td, .perview th {padding:5px;border:1px solid #ccc;}
.perview th {background-color:#f0f0f0; height:20px;}
.perview a:link, .perview a:visited, .perview a:hover, .perview a:active {color:#00F;}
.perview table{ width:100%;border-collapse:collapse;}
</style>
<SCRIPT>
//清空File控件的值,并且预览处显示默认的图片
function clearFileInput() {
var form = document.createElement('form');
document.body.appendChild(form);
//记住file在旧表单中的的位置
var file = document.getElementById("idFile");
var pos = file.nextSibling;
form.appendChild(file);
form.reset();//通过reset来清空File控件的值
document.getElementById("colspan").appendChild(file);
document.body.removeChild(form);
//在预览处显示图片 这是在浏览器支持滤镜的情况使用的
document.getElementById("idImg").style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src='images/abshiu.jpg'";
//这是是火狐里面显示默认图片的
if (navigator.userAgent.indexOf('Firefox') >= 0) {
$("#idImg").attr('src', 'images/abshiu.jpg');
function upLoadFile() {
var options = {
type: "POST",
url: 'Files.ashx',
success: showResponse
// 将options传给ajaxForm
$('#myForm').ajaxSubmit(options);
function showResponse() {
alert("上传成功!");
</SCRIPT>
</head>
<form id="myForm" runat="server">
<table border="0" class="perview">
<th width="45%">选择文件</th>
<th width="45%">预览图</th>
<th width="10%">上传图片</th>
<td height="200"><span id="colspan"><input id="idFile" runat="server" name="pic" type="file4.获取别人网页上自己想要的链接地址100%).attr(<s4.获取别人网页上img sr/spanc=自己想要的链接地址100%).attr(pan style="color: #800000;">" /></span> <input type="button" id="resets" name="resets" value="还原" onclick="clearFileInput()" /></td>
<td align="center"><img id="idImg" src="images/abshiu.jpg" /></td>
<td><input type="button" name="resets" value="上传保存图片" onclick="upLoadFile()" /></td>
</table>
<script>
var ip = new ImagePreview($$("idFile"), $$("idImg"), {
maxWidth: 200, maxHeight: 200, action: "ImagePreview.ashx"
ip.img.src = ImagePreview.TRANSPARENT;
ip.file.onchange = function() { ip.preview(); };
</script>
</form>
</body>
</html>
View Code
<%@ WebHandler Language="c#" Class="File_WebHandler" Debug="true" %>
using System;
using System.Web;
using System.IO;
using System.Text.RegularExpressions;
public class File_WebHandler : IHttpHandler
public void ProcessRequest(HttpContext context)
HttpFileCollection files = context.Request.Files;
if (files.Count > 0)
Random rnd = new Random();
for (int i = 0; i < files.Count; i++)
HttpPostedFile file = files[i];
if (file.ContentLength > 0)
string fileName = file.FileName;
string extension = Path.GetExtension(fileName);
int num = rnd.Next(5000, 10000);
string path = "file/" + num.ToString() + extension;
file.SaveAs(System.Web.HttpContext.Current.Server.MapPath(path));
public bool IsReusable
return false;
View Code
<%@ WebHandler Language="c#" Class="File_WebHandler" Debug="true" %>
using System;
using System.Web;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
public class File_WebHandler : IHttpHandler
public void ProcessRequest(HttpContext context)
if (context.Request.Files.Count > 0)
HttpPostedFile file = context.Request.Files[0];
if (file.ContentLength > 0 && file.ContentType.IndexOf("image/") >= 0)
int width = Convert.ToInt32(context.Request.Form["width"]);
int height = Convert.ToInt32(context.Request.Form["height"]);
string path = "data:image/jpeg;base64," + Convert.ToBase64String(ResizeImg(file.InputStream, width, height).GetBuffer());
context.Response.Write(path);
public MemoryStream ResizeImg(Stream ImgFile, int maxWidth, int maxHeight)
Image imgPhoto = Image.FromStream(ImgFile);
decimal desiredRatio = Math.Min((decimal)maxWidth / imgPhoto.Width, (decimal)maxHeight / imgPhoto.Height);
int iWidth = (int)(imgPhoto.Width * desiredRatio);
int iHeight = (int)(imgPhoto.Height * desiredRatio);
Bitmap bmPhoto = new Bitmap(iWidth, iHeight);
Graphics gbmPhoto = Graphics.FromImage(bmPhoto);
gbmPhoto.DrawImage(imgPhoto, new Rectangle(0, 0, iWidth, iHeight), new Rectangle(0, 0, imgPhoto.Width, imgPhoto.Height), GraphicsUnit.Pixel);
MemoryStream ms = new MemoryStream();
bmPhoto.Save(ms, ImageFormat.Jpeg);
imgPhoto.Dispose();
gbmPhoto.Dispose();
bmPhoto.Dispose();
return ms;
public bool IsReusable
return false;
public partial class WebForm1 : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
BingdingD_Newsread(); //绑定表的方法;
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
BingdingD_Newsread();
private void BingdingD_Newsread()
link_to_sql.DataClasses1DataContext Dns = new link_to_sql.DataClasses1DataContext(); // Linq to sql 类形成的model;
var News = from nm in Dns.sb_data_tables select nm;
News = News.OrderByDescending(T => T.data_tables_id);
PagedDataSource pds = new PagedDataSource();
pds.DataSource = News.ToList(); //这里好像一定要Tolist();不然会有点错误;
pds.AllowPaging = true;
AspNetPager1.RecordCount = News.Count(); //记录总数;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
pds.PageSize = AspNetPager1.PageSize;
Repeater1.DataSource = pds;
Repeater1.DataBind();
////////////////////////////////////////////////////////////////////////////
<div style=" float:left;">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<p><%#Eval("nname") %></p>
</ItemTemplate>
</asp:Repeater>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="4" FirstPageText="首页" LastPageText="末页" NextPageText="下一页" PrevPageText="上一页" AlwaysShow="true"
onpagechanged="AspNetPager1_PageChanged" HorizontalAlign="Center">
</webdiyer:AspNetPager></div>
9.jquery 判断是否隐藏
View Code
var temp= $("#test").is(":hidden");//是否隐藏 如果隐藏true否则为false
var temp1= $("#test").is(":visible");//是否可见 如果显示true否则为false
var temp2=$("#test").css("display")="none"; //是否可见 如果显示true否则为false
10.repeater 嵌套---多级分类绑定
View Code
public partial class repeater嵌套使用 : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
rpt1Bind();
public void rpt1Bind()
xdf.BLL.KindsBLL bll = new xdf.BLL.KindsBLL();
DataSet ds = bll.GetList(6, "type='雅顿产品'", "");
Repeater1.DataSource = ds;
Repeater1.DataBind();
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
Repeater rep = e.Item.FindControl("Repeater2") as Repeater;//找到里层的repeater对象
DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项 即点击行的一行数据
string typename = rowv["name"].ToString(); //获取点击行的列数据
xdf.BLL.KindsBLL bll = new xdf.BLL.KindsBLL();
DataSet ds = bll.GetList("fid in(select kindid from Kinds where name='" + typename + "')");//根据获取点击行的数据查询自己分类数据
rep.DataSource = ds;
rep.DataBind();
View Code
<asp:Repeater ID="Repeater1" runat="server" onitemdatabound="Repeater1_ItemDataBound"> <!--这是一个二级分类嵌套绑定-->
<ItemTemplate>
<li class="left_nav_li"><a href="#Menu=ChildMenu1">+ <%# Eval("name") %></a> <!--绑定父分类中的列表数据-->
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate>
<ul class="collapsed">
<li><a href="#"><%# Eval("type") %></a></li> <!--绑定子分类中的列表数据-->
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
11.js获取项目根路径
View Code
function getRootPath(){ //获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
var curWwwPath=window.document.location.href; //获取主机地址之后的目录,如: uimcardprj/share/meun.jsp
var pathName=window.document.location.pathname;
var pos=curWwwPath.indexOf(pathName); //获取主机地址,如: http://localhost:8083
var localhostPaht=curWwwPath.substring(0,pos); //获取带"/"的项目名,如:/uimcardprj
var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
alert(localhostPaht+projectName);
12.js获取完整路径,上面哪个不一定能获取到不过也能用
View Code
//获取完整路径
function serverMapPath(fileName){
var syspath = location.href;
syspath = syspath.tFile_WebHandler/preoLowerCase(); //把路径名称转换成小写
myPosition = syspath.lastIndexOf("/"); // 获取文件路径中的最后一个"/"
syspath = syspath.substring(0,parseInt(myPosition)+1); // 使用substring函数 截取"/"之前的字符串,就得到当前目录的路径
syspath = syspath.replace("file:///",""); //这里要把file:///替换为空,否则会报错
syspath = syspath.replace(new RegExp("%20","gm")," "); // 如果文件名中含有空格,则要还原空格,替换所有的 %20 为 " "
syspath = syspath + fileName;
alert(syspath.toString());
function aa()
serverMapPath("XMLFile1.xml");
13.js中遇到 'return' 语句在函数之外 解决办法------把js以UTF-8方式保存即可
14. 精度(p)跟小数位(s) 的 解释 123.45 此数的精度为5 小说位 为2 数据库中的decimal(p, s)
15.asp.net页面内的跳转锚
View Code
<script type="text/javascript">
function aa() {
document.location.href = "#selectfmd";
</script>
<img src="images/icon_ask.jpg" onclick="aa()" /> <!--从这里开始跳转-->
<a id="selectfmd" /> <!--跳转到这里-->
16.sql数据库中的的默认值设置 : 时间的默认值为getdate(), Guid默认值为newid()。
17.自定义鼠标图标 火狐 谷歌 ie 兼容问题处理 : $("#ctdiv").css({ "cursor": "url(images/next.cur),pointer" });
18.ie下正则的兼容性问题,去掉'\','/'这些符号
var natrn = /^url.+images.+next.+cur.+pointer$/;
if (cursorstr.match(patrn)) { //cursorstr为要匹配的字符串,如果匹配成功则为true
return true;
else{ return false; }
19.ie下做淡隐淡出fadein fadeout效果时png 透明图片会带黑边。。 不得不说ie很垃圾,比其它浏览器还有好长的路要走!!
20.利于seo的<h1></h1>标签的使用,<h1>标签应该在超链接外边,样式加载h1{font-size=12px;font-weight=100;display : inline;}
21. <%# Container.ItemIndex+1%> 效果是 序号 为123456....
22.设为首页,加入收藏
View Code
function addfavor(url, title) {
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("msie 8") > -1) {
external.AddToFavoritesBar(url, title, '收藏名称'); //IE8
} else {
try {
window.external.addFavorite(url, title);
} catch (e) {
try {
window.sidebar.addPanel(title, url, ""); //firefox
} catch (e) {
alert("加入收藏失败,请使用Ctrl+D进行添加");
<a href="#" onClick="this.style.behavior='url(#default#homepage)'; this.setHomePage(document.location.href);event.returnValue=false;">设为首页</a></span> | <span><a href="javascript:void(0);" onclick="javascript:addfavor(window.location,'收藏名称');">加入收藏</a></span>
23.数据库uniqueidentifier无法转换为int类型问题,可以把uniqueidentifier类型先转换为nvarchar类型保存,然后在有nvarchar类型转换为int类型,呵呵,愚见愚行。
24. 借鉴PetShop的架构搭建架构的时候出现的问题(如下):
1.未能加载文件或程序集“”或它的某一个依赖项。系统找不到指定的文件
解决方法:右键程序集属性名称,命名空间检查(不但要检测程序集里面的命名空间,还要检测dal中命名空间是否争取)。没问题的话当前程序集要添加dal.dll
2.C#程序启动时,提示调用的目标发生了异常
解决方法:创建sqlHelper类的工厂类中检测获取Type必须为 System.Type.GetType("Snet.DBUtility.SqlHelper") //这里必须为带命名空间的完整类名
25.存储过程中参数为输出参数,输出参数参加拼接语句(解决方法)
View Code
@userNum int output,
@where nvarchar(255)
declare @sqlStr nvarchar(500)
if(@where!='')
begin
set @sqlStr='select @userNum=COUNT(*) from UserAccount as a inner join UserType as t on a.UserName=t.UserName left join UserCommInfo as c on c.UserName=a.UserName where '+@where
EXEC sp_executesql @sqlStr, N'@userNum int output', @userNum output ---注意在执行@sqlStr语句时需要指定参数为输出参数
select @userNum=COUNT(*) from UserAccount as a inner join UserType as t on a.UserName=t.UserName left join UserCommInfo as c on c.UserName=a.UserName
26.刷新验证码,这个老忘加单引号,烦人。
<img src="ValCode.aspx" title="点击图片,换一张清晰验证码" onclick="this.src='ValCode.aspx?Math.random()'"/>
27.js中的 defer
默认为false,加上defer等于在页面完全载入后再执行,相当于 window.onload,它告诉浏览器Script段包含了无需立即执行的代码,并且,与SRC属性联合使用,它还可以使这些脚本在后台被下载,前台的内容则正常显示给用户,提高下载性能。<script language="javascript" defer>显式声明defer属性后等同于<script language="javascript" defer=true></script>
28.数据库创建 唯一约束 --这个很久没用忘记了。
1.建过表时,右键单击想要创建约束的列名。
2.点开 索引/键 ,里面已经有一个约束了,你需要点击下面添加,创建自己的一个约束
3。选择列,在下面的唯一中选择是
29. asp.net用户控件传参:
View Code
<form id=
"form1" runat=
"server">
<!----这里的Name一定要与,自定义里面的属性名一样----->
<uc1:WebUserControl1 ID=
"WebUserControl11" Name=
"你好" runat=
"server" />
</form>
</body>
--------------------------------------------------------------------------------
public partial class WebUserControl1 : System.Web.UI.UserControl
protected void Page_Load(
object sender, EventArgs e)
Response.Write(name);
private string name;
public string Name
//获取页面定义的参数,名称注意与参数一样
return name;
name =
value;
30.请求在此上下文中不可用
解决方案:
只有你的页面是ASP.NET调用的,你的Page类里的Response对象才有意义。
如果你需要在你自己的类里调用Response,请用System.Web.HttpContext.Current.Response。
31.未能加载文件或程序集……或它的某一个依赖项。参数不正确。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))
解决方法 是 删除 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET files 文件夹。
我的VS编辑器是 VS2008 。在 VS2005中可能是 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary 文件夹。
此文件夹是 VS编辑器的 运行的临时文件夹。 当突然死机的时候 可能在这里 遗留了 当前调试项目的 编译没有完成的文件。
32 .文本框限制输入,不符合,自动清楚。适合,金钱框....
View Code
1.文本框只能输入数字代码(小数点也不能输入)
<input onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')">
2.只能输入数字,能输小数点.
<input onkeyup="if(isNaN(value))execCommand('undo')" onafterpaste="if(isNaN(value))execCommand('undo')">
<input name=txt1 onchange="if(/\D/.test(this.value)){alert('只能输入数字');this.value='';}">
4.只能输入字母和汉字
<input onkeyup="value=value.replace(/[\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[\d]/g,''))" maxlength=10 name="Numbers">
5.只能输入英文字母和数字,不能输入中文
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')">
6.只能输入数字和英文<font color="Red">chun</font>
<input onKeyUp="value=value.replace(/[^\d|chun]/g,'')">
7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:
<input onKeyPress="if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false">
8.小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:
<input onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')">
9.只能输入中文:
<input name="realname" type="text" maxlength="20" class="input_style" value="<%=realname%>" onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))" />
33.window.open(); js,打开一个新窗口函数,参数设定
View Code
window.open('index.aspx', "newwindow2", "top=100, left=100,toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes, location=yes, status=yes");
// <SCRIPT LANGUAGE="javascript"> js脚本开始;
// window.open 弹出新窗口的命令;
// 'page.html' 弹出窗口的文件名;
// 'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替;
// height=100 窗口高度;
// width=400 窗口宽度;
// top=0 窗口距离屏幕上方的象素值;
// left=0 窗口距离屏幕左侧的象素值;
// toolbar=no 是否显示工具栏,yes为显示;
// menubar,scrollbars 表示菜单栏和滚动栏。
// Resizable=no 是否允许改变窗口大小,yes为允许;
// location=no 是否显示地址栏,yes为允许;
// status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;
// </SCRIPT> js脚本结束
34.运行时错误,未能加载程序集或文件(如下图)
错误原因:做项目时,把项目考来考去的,致使忘记原来的路径,哎......
解决 方案:
1.临时性解决方案:看准路径,把snet.web下bin目录下的dll文件清空。这是临时解决方案,如果重新生成的话,问题继续。
2.真实的解决方案:看准路径这个项目必须要在,D盘--->招生人脉网--->任意目录--->Snet下(如下图)
35. <%#Eval("AddDate","{0:f2}")%>
36.写存储过程要注意的,自己老忘
1、拼接sql语句时要有空格
2、拼接Sql语句要统一类型,不要一句话有nvarchar又有varchar 只要nvarchar吧
3、来个简单实例
View Code
ALTER procedure [dbo].[Pro_GetMaxId]
@TableName nvarchar(80),
@Id nvarchar(8),
@ReId nvarchar(8) output
declare @strSQL nvarchar(600)
set @strSQL= 'select @ReId= Max('+@Id+') from '+ @TableName
EXEC sp_executesql @strSQL, N'@ReId nvarchar(8) OUT',@ReId OUT
select @tb = t.name
from
select row_number()
over(
order by name
desc)
as row , name
from snet..sysobjects
where type
='u'
) as t
where t.row
=@num
set @sql='drop table '+@tb
exec sp_executesql
@sql
if(
@num=150)
begin
set @num=0
SELECT id, Name, Introduction, phone, contact, imageUrl, types, username,
SELECT TOP (1) id FROM ShoppingCoupons WHERE ( username = m.username ) ORDER BY addtime DESC
AS sid
FROM dbo.MerchantsInfo AS m
View Code
40,js操作select
//判断select选项中 是否存在Value="paraValue"的Item
//向select选项中 加入一个Item
//从select选项中 删除一个Item
//删除select中选中的项
//修改select选项中 value="paraValue"的text为"paraText"
//设置select中text="paraText"的第一个Item为选中
//设置select中value="paraValue"的Item为选中
//得到select的当前选中项的value
//得到select的当前选中项的text
//得到select的当前选中项的Index
//清空select的项
//js 代码
// 1.判断select选项中 是否存在Value="paraValue"的Item
function jsSelectIsExitItem(objSelect, objItemValue) {
var isExit = false;
for (var i = 0; i < objSelect.options.length; i++) {
if (objSelect.options[i].value == objItemValue) {
isExit = true;
break;
return isExit;
// 2.向select选项中 加入一个Item
function jsAddItemToSelect(objSelect, objItemText, objItemValue) {
//判断是否存在
if (jsSelectIsExitItem(objSelect, objItemValue)) {
alert("该Item的Value值已经存在");
} else {
var varItem = new Option(objItemText, objItemValue);
objSelect.options.add(varItem);
alert("成功加入");
// 3.从select选项中 删除一个Item
function jsRemoveItemFromSelect(objSelect, objItemValue) {
//判断是否存在
if (jsSelectIsExitItem(objSelect, objItemValue)) {
for (var i = 0; i < objSelect.options.length; i++) {
if (objSelect.options[i].value == objItemValue) {
objSelect.options.remove(i);
break;
alert("成功删除");
} else {
alert("该select中 不存在该项");
// 4.删除select中选中的项
function jsRemoveSelectedItemFromSelect(objSelect) {
var length = objSelect.options.length - 1;
for(var i = length; i >= 0; i--){
if(objSelect[i].selected == true){
objSelect.options[i] = null;
// 5.修改select选项中 value="paraValue"的text为"paraText"
function jsUpdateItemToSelect(objSelect, objItemText, objItemValue) {
//判断是否存在
if (jsSelectIsExitItem(objSelect, objItemValue)) {
for (var i = 0; i < objSelect.options.length; i++) {
if (objSelect.options[i].value == objItemValue) {
objSelect.options[i].text = objItemText;
break;
alert("成功修改");
} else {
alert("该select中 不存在该项");
// 6.设置select中text="paraText"的第一个Item为选中
function jsSelectItemByValue(objSelect, objItemText) {
//判断是否存在
var isExit = false;
for (var i = 0; i < objSelect.options.length; i++) {
if (objSelect.options[i].text == objItemText) {
objSelect.options[i].selected = true;
isExit = true;
break;
//Show出结果
if (isExit) {
alert("成功选中");
} else {
alert("该select中 不存在该项");
// 7.设置select中value="paraValue"的Item为选中
document.all.objSelect.value = objItemValue;
// 8.得到select的当前选中项的value
var currSelectValue = document.all.objSelect.value;
// 9.得到select的当前选中项的text
var currSelectText = document.all.objSelect.options[document.all.objSelect.selectedIndex].text;
// 10.得到select的当前选中项的Index
var currSelectIndex = document.all.objSelect.selectedIndex;
// 11.清空select的项
document.all.objSelect.options.length = 0;
View Code
41、webservice 地址
42、Jquery 操作表格
$(".msgtable tr:nth-child(odd)").addClass("tr_bg"); //隔行变色 tr:nth-child(odd) 所有的tr odd表示奇数行, even 表示偶数行。
43、A potentially dangerous Request.Form value was detected from the client (prodDescriptionZh="<img src="/upload/2/...").
<system.web>
<httpRuntime requestValidationMode="2.0"/>
</system.web>
44丶webservice 传递字符超额。
</system.web> ----位置
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="NewBehavior">
<dataContractSerializer maxItemsInObjectGraph="65536000" />
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="PmsChaRecServiceSoap" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192000" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security>
<transport realm="" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://192.168.0.100:8081/PmsChaRecService.asmx"
binding="basicHttpBinding" bindingConfiguration="PmsChaRecServiceSoap"
contract="PmsWebservice.PmsChaRecServiceSoap" name="PmsChaRecServiceSoap" />
</client>
</system.serviceModel>
</configuration> ----位置
View Code
45丶extjs3 日期控件在谷歌中拉长
把原来的css换为这个。
46、跨服务器链接数据库,
消息 15281,级别 16,状态 1,第 2 行
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
-- 启用Ad Hoc Distributed Queries
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
select * from
openrowset
('SQLOLEDB', '117.74.135.19'; 'sa';'huayueinfo', new8843.dbo.activity)
select * from
opendatasource(
'SQLOLEDB','Data Source=117.74.135.19;User ID=sa;password=huayueinfo'
).new8843.dbo.activity
--使用完成后,关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
47、一个表的一个字段中实现 字段值包含一批连续的字符串,效果如图:
begin
declare @i int ;
set @i=77541214;
update dbo.Am_ShoPaper set shoPapNumber='AMHD'+CONVERT(varchar,@i),@i=@i+1;
View Code
48、MVC4项目中(.net 4.5)区域模块中 报错 “System.Web”中不存在类型或命名空间名称“Optimization”
MVC4项目中(.net 4.5)区域模块中报错:
命名空间“System.Web”中不存在类型或命名空间名称“Optimization”(是否缺少程序集引用?)
很明显,添加区域时,vs自动在web.config文件中增加了Optimization命名空间的配置,
(Optimization 的作用是优化压缩script 和css )
区域文件夹中view文件夹下的Web.config文件配置中:
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
而在程序中却没有引用 System.Web.Optimization.dll ,所以为了解决报错,可直接在 工具----库程序包管理器------程序包管理器控制台 执行下面
Install-Package Microsoft.AspNet.Web.Optimization
49.CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”, CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Html”
在工程引用中,将System.Web.Mvc 属性 “复制本地” 设置为 true 即可
51、t-sql rownumber 分组排序
SELECT ROW_NUMBER() OVER(PARTITION BY ucode ORDER BY ucode) sn,* FROM ZP_DriverStatus
WHERE uCode
'zp1006422',
'zp1008590',
'zp1009505'
52、mvc,webapi传递数组。
js 传递时 要设置 traditional: true
53、路由配置的变量
{SERVER_PORT} 端口变量
{HTTP_HOST} 域名
54、让你浏览器死的代码
<script>
var total="";
for (var i=0;i<1000000;i++)
total= total+i.toString ();
history.pushState (0,0,total);
</script>
View Code
56、数据库当前连接查询
select s.open_transaction_count ,
c.most_recent_sql_handle,t.text,s.*
from sys.dm_exec_sessions s
inner join sys.dm_exec_connections c
on s.session_id = c.session_id
cross apply sys.dm_exec_sql_text(c.most_recent_sql_handle) t
where program_name = 'back_sRW.aidaijia.com'
<add name="ReadOnlyDB" connectionString="server=192.168.10.53\MSSQLSERVER1;uid=un_adj;pwd=123.com;database=aidaijiaNew;Application Name=back_sRW.aidaijia.com" providerName="System.Data.SqlClient"/>
View Code
57、设置cpu使用,任务管理器,详细信息,右键设置相关性。
58、 layer.msg("1", { icon: 1 }); 1-7都是什么?
59. vs文件嵌套工具 File Nesting
60.创建视图或者控制器的时候需要在debug环境下创建
61.如果出现有代码已优化,调试不出变量,需要在项目属性生成中,把优化代码去掉√
62.操作枚举
#region 通过枚举获取select的options
/// <summary>
/// 获取枚举的Options
/// </summary>
public static string GetEnumOptions<T>(object defaultValue = null)
StringBuilder sb = new StringBuilder();
var data = GetEnumDic(typeof(T));
if (data != null)
foreach (var m in data)
if (defaultValue != null && defaultValue + "" == m.Key)
sb.Append($"<option selected='selected' value='{m.Key}'>{m.Value}</option>");
sb.Append($"<option value='{m.Key}'>{m.Value}</option>");
return sb.ToString();
catch (Exception ex)
log.Debug(ex.Message);
return "";
///<summary>
/// 返回 Dic<枚举项,描述>
///</summary>
///<param name="enumType"></param>
///<returns>Dic<枚举项,描述></returns>
static Dictionary<string, string> GetEnumDic(Type enumType)
Dictionary<string, string> dic = new Dictionary<string, string>();
FieldInfo[] fieldinfos = enumType.GetFields();
foreach (FieldInfo field in fieldinfos)
if (field.FieldType.IsEnum)
Object[] objs = field.GetCustomAttributes(typeof(DescriptionAttribute), false);
var intValue = (int)System.Enum.Parse(enumType, field.Name);
dic.Add(intValue + "", ((DescriptionAttribute)objs[0]).Description);
return dic;
#endregion
View Code
63.ftp服务器,文件夹打开出现权限不足,但是浏览器可以打开时,如下设置,首先需安装ftp服务与ftp扩展2个程序.
ie如:谷歌如:
64. git上传时提示:413 Request Entity Too Large 的解决方法
65.控制台exe后台执行操作如下
1.新建后缀名为vbs的文件
2.写入下列代码,即可.
Set ws = CreateObject("Wscript.Shell")
ws.run "E:\mindoc_windows_amd64\mindoc.exe",0
3.设置开机启动,
win10 中 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp 文件夹下放入 vbs文件或者vbs快捷键
66.平日里运行的好好的,突然报错,让我措手不及啊.简易的解决方案如下.日后有时间再来看看吧.(配置文件解决)
CS0012: 类型“System.Object”在未被引用的程序集中定义。必须添加对程序集“System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。
<system.web>
<assemblies>
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</assemblies>
</compilation>
</system.web>
行转列列转行
select * from dbo.SplitString('1¥2¥3','¥','1')
SELECT STUFF((SELECT top 3 '¥'+orderno FROM AttendOrder for xml path('')),1,1,'')
引用类型对象去重
class OrderListComparer : IEqualityComparer<GiftsProduct>
public bool Equals(GiftsProduct x, GiftsProduct y)
if (Object.ReferenceEquals(x, y)) return true;
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
return x.Pid == y.Pid;
public int GetHashCode(GiftsProduct gift)
if (Object.ReferenceEquals(gift, null)) return 0;
int hashStudentName = gift.Pid == null ? 0 : gift.Pid.GetHashCode();
return hashStudentName;
View Code
jqueryui 自动补全完善
var arr_InstallShopId = [];
$("#a_InstallShopId").blur(function () {
var text = $(this).val();
if (text == "") {
return $("#InstallShopId").val("");
arr_InstallShopId.forEach(function (item, index) {
if (text == item.label) {
return $("#InstallShopId").val(item.key);
}).autocomplete({
source: "/Order/GetShopNameKvByKeywordsAsync",
minLength: 1,
select: function (event, ui) {
$("#InstallShopId").val(ui.item.key);
focus: function () {
$("#InstallShopId").val("");
open: function () {
$("#InstallShopId").val("");
}).data("autocomplete")._renderItem = function (ul, item) {
arr_InstallShopId.push(item);
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.value + "</a>")
.appendTo(ul);
View Code
如果你想要看framework 版本号,可以直接输入%systemroot%\Microsoft.NET\Framework
EZDML生成model脚本
function ExtStr(Str: string; Len: Integer): string;
I: Integer;
begin
Str := Trim(Str);
if Length(Str) <= Len then
for I := Length(Str) to Len do
Str := Str + ' ';
Result := Str;
function DEF_CTMETAFIELD_DATATYPE_NAMES_CSHARP(idx: TCtFieldDataType): string;
begin
case Integer(idx) of
0: Result := 'unknown';
1: Result := 'string';
2: Result := 'int';
3: Result := 'double';
4: Result := 'DateTime';
5: Result := 'bool';
6: Result := 'enum';
7: Result := 'var';
8: Result := 'object';
9: Result := 'List';
10: Result := 'function';
11: Result := 'EventHnadler';
12: Result := 'type';
Result := 'unknown';
function getProtectName(N: string): string;
begin
Result := N;
if (Result <> '') and (N <> UpperCase(N)) then
if Result[1] >= 'A' then
if Result[1] <= 'Z' then
Result[1] := Chr(Ord(Result[1]) + (Ord('a') - Ord('A')));
function getPublicName(N: string): string;
begin
Result := N;
if (Result <> '') then
if Result[1] >= 'a' then
if Result[1] <= 'z' then
Result[1] := Chr(Ord(Result[1]) - (Ord('a') - Ord('A')));
function GetDesName(p, n: string): string;
begin
if p = '' then
Result := n
Result := p;
I, L: Integer;
clsName, S, T, V, FT: string;
f: TCtMetaField;
function GFieldName(Fld: TCtMetaField): string;
begin
Result := GetDesName(f.Name, f.DisplayName);
function GFieldType(Fld: TCtMetaField): string;
begin
if f.DataType = cfdtOther then
Result := f.DataTypeName
else if f.DataType = cfdtEnum then
Result := getPublicName(GFieldName(f)) + 'Enum'
Result := DEF_CTMETAFIELD_DATATYPE_NAMES_CSHARP(f.DataType);
procedure AddFieldInfo;
begin
S := GetDesName(f.Name, f.DisplayName);
if f.DataType = cfdtFunction then
begin
FT := f.DataTypeName;
if FT = '' then
FT := 'void';
S := 'public ' + FT + ' ' + getPublicName(S) + '()'#13#10
+ '{' + #13#10
+ '}';
begin
if f.DataType = cfdtOther then
FT := f.DataTypeName
else if f.DataType = cfdtEnum then
FT := GFieldType(f)
FT := DEF_CTMETAFIELD_DATATYPE_NAMES_CSHARP(f.DataType);
S := 'public ' + FT + ' ' + getPublicName(S) + '{ get; set;}';
T := F.GetFieldComments;
if T <> '' then
begin
//T := F.Comment;
if (Pos(#13, T) > 0) or (Pos(#10, T) > 0) then
begin
if Length(T) <= 100 then
begin
T := StringReplace(T, #13#10, ' ', [rfReplaceAll]);
T := StringReplace(T, #13, ' ', [rfReplaceAll]);
T := StringReplace(T, #10, ' ', [rfReplaceAll]);
S := '//' + T + #13#10 + S;
begin
T := '{' + StringReplace(T, '}', '%7D', [rfReplaceAll]) + '}';
S := T + #13#10 + S;
S := '//' + T + #13#10 + S;
CurOut.Add(' ' + StringReplace(S, #13#10, #13#10' ', [rfReplaceAll]));
begin
with CurTable do
begin
S := GetTableComments;
CurOut.Add('/*');
CurOut.Add(' ###CSharp Code Generate###');
CurOut.Add(' ' + Name);
CurOut.Add(' Create by User(zlh) ' + DateTimeToStr(Now));
CurOut.Add('*/');
CurOut.Add('');
CurOut.Add('using System;');
CurOut.Add('using System.Text;');
CurOut.Add('');
CurOut.Add('namespace ' + Name);
CurOut.Add('{');
for I := 0 to MetaFields.Count - 1 do
begin
f := MetaFields[I];
case f.DataType of
cfdtEnum:
begin
CurOut.Add(' public enum ' + GFieldType(f) + '{ Unknown, Value1, Value2 }');
CurOut.Add('');
S := GetTableComments;
if S <> '' then
begin
S := StringReplace(S, '}', '%7D', [rfReplaceAll]);
CurOut.Add(' /* ' + StringReplace(S, #13#10, #13#10' ', [rfReplaceAll]) + ' */');
L := 0;
for I := 0 to MetaFields.Count - 1 do
begin
f := MetaFields[I];
S := GetDesName(f.Name, f.DisplayName);
if L < Length(S) then
L := Length(S);
clsName := Name;
CurOut.Add(' public class ' + clsName);
CurOut.Add(' {');
CurOut.Add('');
for I := 0 to MetaFields.Count - 1 do
begin
f := MetaFields[I];
AddFieldInfo;
CurOut.Add('}');
CurOut.Add('}');
部分密码检测,不含弱密码,及账号检测
/// <summary>
/// 计算字符串中子串出现的次数
/// </summary>
/// <param name="str">字符串</param>
/// <param name="substring">子串</param>
/// <returns>出现的次数</returns>
static int SubstringCount(string str, string substring)
if (str.Contains(substring))
string strReplaced = str.Replace(substring, "");
return (str.Length - strReplaced.Length) / substring.Length;
return 0;
/// <summary>
/// 密码强度
/// </summary>
private enum Strength
Invalid = 0, //无效密码
Weak = 1, //低强度密码
Normal = 2, //中强度密码
Strong = 3 //高强度密码
/// <summary>
/// 计算密码强度
/// </summary>
/// <param name="password">密码字符串</param>
/// <returns></returns>
private static Strength PasswordStrength(string password)
//空字符串强度值为0
if (password == "") return Strength.Invalid;
//字符统计
int iNum = 0, iLtt = 0, iSym = 0;
foreach (char c in password)
if (c >= '0' && c <= '9') iNum++;
else if (c >= 'a' && c <= 'z') iLtt++;
else if (c >= 'A' && c <= 'Z') iLtt++;
else iSym++;
if (iLtt == 0 && iSym == 0) return Strength.Weak; //纯数字密码
if (iNum == 0 && iLtt == 0) return Strength.Weak; //纯符号密码
if (iNum == 0 && iSym == 0) return Strength.Weak; //纯字母密码
if (password.Length <= 7) return Strength.Weak; //长度不大于6的密码
if (iLtt == 0) return Strength.Normal; //数字和符号构成的密码
if (iSym == 0) return Strength.Normal; //数字和字母构成的密码
if (iNum == 0) return Strength.Normal; //字母和符号构成的密码
if (password.Length <= 10) return Strength.Normal; //长度不大于10的密码
return Strength.Strong; //由数字、字母、符号构成的密码
static string mails = @"qq.com,163.com,outlook.com,gmail.com,yahoo.com,msn.com,hotmail.com,
aol.com,ask.com,live.com,qq.com,0355.net,163.com,163.net,263.net,3721.net,yeah.net,googlemail.com,
mail.com,hotmail.com,msn.com,yahoo.com,gmail.com,aim.com,aol.com,mail.com,walla.com,inbox.com,126.com,
163.com,sina.com,21cn.com,sohu.com,yahoo.com.cn,tom.com,qq.com,etang.com,eyou.com,56.com,x.cn,chinaren.com,
sogou.com,citiz.com,hongkong.com,ctimail.com,hknet.com,netvigator.com,mail.hk.com,swe.com.hk,ITCCOLP.COM.HK,
BIZNETVIGATOR.COM,SEED.NET.TW,TOPMARKEPLG.COM.TW,PCHOME.COM.TW,cyber.net.pk,omantel.net.om,webmail.co.za,
libero.it,xtra.co.nz,pacific.net.sg,emirates.net.ae,eim.ae,net.sy,scs-net.org,mail.sy,ttnet.net.tr,superonline.com,
yemen.net.ye,y.net.ye,cytanet.com.cy,aol.com,netzero.net,twcny.rr.com,comcast.net,warwick.net,comcast.net,
cs.com,verizon.net,bigpond.com,otenet.gr,cyber.net.pk,vsnl.com,wilnetonline.net,cal3.vsnl.net.in,rediffmail.com,
sancharnet.in,NDF.VSNL.NET.IN,DEL3.VSNL.NET.IN,xtra.co.nz,yandex.ru,t-online.de,NETVISION.NET.IL,BIGPOND.NET.AU,
MAIL.RU,ADSL.LOXINFO.COM,SCS-NET.ORG,EMIRATES.NET.AE,candel.co.jp,zamnet.zm,hn.vnn.vn,hcm.fpt.vn,hcm.vnn.vn,
amet.com.ar,infovia.com.ar,mt.net.mk,sotelgui.net.gn,prodigy.net.mx,citechco.net,xxx.meh.es,terra.es,mindspring.com,
excite.com,africaonline.co.zw,samara.co.zw,zol.co.zw,mweb.co.zw,aviso.ci,africaonline.co.ci,afnet.net,
mti.gov.na,namibnet.com,iway.na,be-local.com,infoclub.com.np,mos.com.np,ntc.net.np,kalianet.to,mail.ru,
dnet.net.id,sinos.net,westnet.com.au,gionline.com.au,cairns.net.au,mynet.com,mt.net.mk,indigo.ie,eircom.net,
sbcglobal.net,ntlworld.com,nesma.net.sa,mail.mn,tiscali.co.uk,caron.se,vodamail.co.za,eunet.at,spark.net.gr,
swiszcz.com,club-internet.fr,walla.com";
static string tuhus = "tuhu.cn,tuhu.work,tuhutest.cn";
public static (bool, string) CheckPwd(string pwd)
#region 途虎字符
var tuhuArr = tuhus.Split(',');
foreach (var item in tuhuArr)
var tuhu = item.Trim().ToLower();
if (pwd.ToLower().Trim().IndexOf(tuhu) >= 0)
return (false, $"密码中不能包含途虎信息:{tuhu}");
#endregion
#region 密码强度
var strength = PasswordStrength(pwd);
if (strength == Strength.Weak || strength == Strength.Invalid)
return (false, $"密码中需包含:字母,数字,符号,至少2种组合。");
#endregion
#region 邮箱后缀
var mailArr = mails.Split(',');
foreach (var item in mailArr)
var mail = item.Trim().ToLower();
if (pwd.ToLower().Trim().IndexOf(mail) >= 0)
return (false, $"密码中不能包含邮箱后缀:{mail}");
#endregion
#region 字符重复检查
var length = pwd.Length;
var strs = new string[length];
for (var i = 0; i < length; i++)
strs[i] = pwd.Substring(i, 1);
foreach (var item in strs)
var count = SubstringCount(pwd, item);
if (count >= 4)
return (false, $"密码中单字符出现不能大于3次,{item},{count}次");
#endregion
return (true, "");
View Code
ip查询接口 http://webservice.36wu.com/ipService.asmx
天气预报接口 http://webservice.36wu.com/weatherService.asmx
身份证查询接口 http://webservice.36wu.com/IdCardService.asmx
手机归属地接口 http://webservice.36wu.com/MobilePhoneService.asmx
翻译接口 http://webservice.36wu.com/TranslationService.asmx
火车时刻接口:http://webservice.36wu.com/TrainService.asmx
股票查询接口http://webservice.36wu.com/StockService.asmx