这一周都在修Defect,修的晕头转向,今天遇到两个小问题,虽然很小但是很烦人,把这么一点实战经验分享给大家看看。
l 首先说LinkButton为什么失效了
由于页面比较复杂,使用了一些Validator 控件,这是在客户端验证的控件,当有错误的时候就首先显示这个错误。但是这个Validator与LinkButton有什么关系呢?察看运行页面的HTML代码,发现生成了一段JavaScript,需要验证通过才可以进行。{if (typeof(Page_ClientValidate) != 'function' || Page_ClientValidate()) __doPostBack('LinkButton1','')}, 可是我没有加收工写过这些代码,后来发现LinkButton有个属性LinkButton.CausesValidation,获取或设置一个值,该值指示在单击 LinkButton 控件时是否执行验证,呵呵,很简单,把它设置为False就可以了。
今天作了这样的一个用户管理的目录结构,如图:
(原来的用户都是在User Directory根目录下的)那么此时用户就找不到了,因为FindOne方法不会递归目录去查找,只是在当前的目录进行查找。后来没有办法,只好把它改成了FindAll,然后再对比每个节点的用户名是否相同。
l 首先说LinkButton为什么失效了
由于页面比较复杂,使用了一些Validator 控件,这是在客户端验证的控件,当有错误的时候就首先显示这个错误。但是这个Validator与LinkButton有什么关系呢?察看运行页面的HTML代码,发现生成了一段JavaScript,需要验证通过才可以进行。{if (typeof(Page_ClientValidate) != 'function' || Page_ClientValidate()) __doPostBack('LinkButton1','')}, 可是我没有加收工写过这些代码,后来发现LinkButton有个属性LinkButton.CausesValidation,获取或设置一个值,该值指示在单击 LinkButton 控件时是否执行验证,呵呵,很简单,把它设置为False就可以了。
l 再说说AD中为什么找不到用户了
先前,为了查找一个用户,用如下的代码,然后在其他调用的地方判断这个SearchResult是否为空:
private SearchResult GetSearchResultByUserID(string UserID)
{
System.DirectoryServices.DirectoryEntry AppNode = new DirectoryEntry(ServerName+"/"+OuName+","+DomainName,UserName,Password);
DirectorySearcher Ds = new DirectorySearcher(AppNode);
Ds.Filter = "(&(objectClass=user)(cn=" + UserID + "))";
SearchResult result = Ds.FindOne();
return result;
}
{
System.DirectoryServices.DirectoryEntry AppNode = new DirectoryEntry(ServerName+"/"+OuName+","+DomainName,UserName,Password);
DirectorySearcher Ds = new DirectorySearcher(AppNode);
Ds.Filter = "(&(objectClass=user)(cn=" + UserID + "))";
SearchResult result = Ds.FindOne();
return result;
}
今天作了这样的一个用户管理的目录结构,如图:
(原来的用户都是在User Directory根目录下的)那么此时用户就找不到了,因为FindOne方法不会递归目录去查找,只是在当前的目录进行查找。后来没有办法,只好把它改成了FindAll,然后再对比每个节点的用户名是否相同。
private SearchResult GetSearchResultByUserID(string UserID)
{
DirectoryEntry rootentry = new DirectoryEntry(ServerName+"/"+DomainName,UserName,Password);
DirectorySearcher ds = new DirectorySearcher(rootentry);
ds.Filter = ("(objectClass=user)");
rootentry.RefreshCache();
SearchResultCollection src = ds.FindAll();
foreach(SearchResult sr in src)
{
System.DirectoryServices.DirectoryEntry mUser = new System.DirectoryServices.DirectoryEntry(sr.GetDirectoryEntry().Path,UserName,Password);
if(string.Compare(mUser.Properties["sAMAccountName"].Value.ToString(), UserID, true) == 0)
{
return sr;
}
}
return null;
}
{
DirectoryEntry rootentry = new DirectoryEntry(ServerName+"/"+DomainName,UserName,Password);
DirectorySearcher ds = new DirectorySearcher(rootentry);
ds.Filter = ("(objectClass=user)");
rootentry.RefreshCache();
SearchResultCollection src = ds.FindAll();
foreach(SearchResult sr in src)
{
System.DirectoryServices.DirectoryEntry mUser = new System.DirectoryServices.DirectoryEntry(sr.GetDirectoryEntry().Path,UserName,Password);
if(string.Compare(mUser.Properties["sAMAccountName"].Value.ToString(), UserID, true) == 0)
{
return sr;
}
}
return null;
}