2012-01-19 12 views
0

私はC#の新機能です。私のaspxページに表示するために呼び出すことができない変数で問題が発生しています。コードの変数を.netページに渡すことができません

の背後にあるコードは以下の通りです:

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.Xml.Linq; 
using System.DirectoryServices; 
using System.DirectoryServices.AccountManagement; 

namespace PRIIS 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
    private DirectoryEntry GetDirectoryObject() 
    { 
     DirectoryEntry oDE; 
     oDE = new DirectoryEntry("LDAP://192.168.5.4", "user", "xxxx", AuthenticationTypes.Secure); 
     return oDE; 
    } 
    public DirectoryEntry GetUser(string UserName) 
    { 
     DirectoryEntry de = GetDirectoryObject(); 
     DirectorySearcher deSearch = new DirectorySearcher(); 
     deSearch.SearchRoot = de; 

     deSearch.Filter = "(&(objectClass=user)(SAMAccountName=" + UserName + "))"; 
     deSearch.SearchScope = SearchScope.Subtree; 
     SearchResult results = deSearch.FindOne(); 

     if (!(results == null)) 
     { 
      de = new DirectoryEntry(results.Path, "user", "xxxx", AuthenticationTypes.Secure); 
      return de; 
     } 
     else 
     { 
      return null; 
     } 

    } 
    public class MyUserName 
    { 
     public string strName; 
     public string str; 

     public void userNameOnSystem() 
     { 
      strName = HttpContext.Current.User.Identity.Name.ToString(); 
      string[] splitString = strName.Split('\\'); 
      str = splitString[1]; 
     } 



    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     DirectoryEntry de = GetUser("dramirez"); 
     if (de != null) 
     { 

      string displayUser = de.Properties["displayName"].Value.ToString(); 

      Response.Write(displayUser + "<br/>"); 
      //Response.Write(de.Properties["telephoneNumber"].Value.ToString() + "<br/>"); 
      //Response.Write(de.Properties["mail"].Value.ToString() + "<br/>"); 
      //Response.Write(de.Properties["userPrincipalName"].Value.ToString() + "<br/>"); 

      } 



     } 

    } 

}

そして、私がやっているコールは、私は次のステートメントを使用して.aspxページに表示するdisplayUser文字列にある

<%= displayUser %> 

残念ながら私はエラーが発生しています。

エラー2名「displayUserは、」現在のコンテキスト

に存在していないと私は方法や場所の問題から来ていることを確認していません。

ご協力いただきありがとうございます。

答えて

3

あなたのASPXマークアップ内からそのような方法で値にアクセスするには、コードビハインド内のプロパティである必要があります(少なくともprotectedのアクセス権があります)。このような何か:

protected string DisplayUser { get; set; } 

protected void Page_Load(object sender, EventArgs e) 
{ 
    DirectoryEntry de = GetUser("dramirez"); 
    if (de != null) 
    { 
     DisplayUser = de.Properties["displayName"].Value.ToString(); 
    } 
} 

それから、これで表示されるはずです:

<%= DisplayUser %> 
+0

完璧に機能しました。どうもありがとうございました – richcfml

0

公開として、あなたの変数を宣言します。

public string displayUser; 
protected void Page_Load(object sender, EventArgs e) 
    { 

     DirectoryEntry de = GetUser("dramirez"); 
     if (de != null) 
     { 

      displayUser = de.Properties["displayName"].Value.ToString(); 

      Response.Write(displayUser + "<br/>"); 
      //Response.Write(de.Properties["telephoneNumber"].Value.ToString() + "<br/>"); 
      //Response.Write(de.Properties["mail"].Value.ToString() + "<br/>"); 
      //Response.Write(de.Properties["userPrincipalName"].Value.ToString() + "<br/>"); 

      } 



     } 
関連する問題