2011-10-08 39 views
0

我正在使用asp.net和Fileuploader的登录控件。 当我离开<LoggedInTemplate>以外的文件上传控件时,它可以工作,但是当我尝试移动<LoggedInTemplate>中的Fileuploader时,我得到“名称xxx在当前上下文中不存在”,并且它反驳了C#。名称xxx在当前上下文中不存在

<LoggedInTemplate> 
    <b>Login ok ! </b><br /> 
     <asp:FileUpload ID="FileUpload1" runat="server" /> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
     InsertCommand="INSERT INTO aspnet_PicturesHome(pUrl) VALUES (@pUrl)" 
     SelectCommand="SELECT pID, pUrl FROM aspnet_PicturesHome"> 
      <InsertParameters> 
       <asp:ControlParameter Name="pUrl" Type="String" ControlID="FileUpload1" PropertyName="FileName"/> 
      </InsertParameters> 
     </asp:SqlDataSource> 
<asp:Label ID="Label1" runat="server" Text="Label">Foto upload: </asp:Label> 
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Upload" /> 
<br></br> 
</LoggedInTemplate> 
+1

“xxx”实际涉及什么? – ChrisF

+0

XXX是什么意思? –

+0

它涉及到Fileupload1和sqlDataSource1 例如: 名称SqlDataSource1不会在当前的背景下 –

回答

3

主要编辑:您可以访问嵌套在一个LoginView这样的控制:

FileUpload fu = LoginView1.FindControl("FileUpload1") as FileUpload; 

如果他们在<LoggedInTemplate>,你会想,以确保它们实际上是登录(反之亦然<AnonymousTemplate>访问控制:他们不应该被登录),否则它不会找到控制和.FindControl()将返回null

参考:根据注释
http://www.velocityreviews.com/forums/t109239-accessing-a-control-within-loginview.html

编辑:Page_Load(),如果初始请求(不回发)检查,如果用户是管理员,如果没有,停用上传控制

protected void Page_Load(object sender, EventArgs e){ 

if(!this.isPostBack) 
{ 
    if(!Context.User.IsInRole("admin")) 
    { 
    //disable controls 
    } 
} 
} 
+0

存在,但我只希望管理员拥有的上传功能“FileUpload1不会在目前的情况下 名称存在”页面,所以我不知道我可以如何解决这个问题没有loggedintemplate。奇怪的是,SqlDataSource1和FileUpload一个给出错误,Button_1没有给出错误,它在

+0

@JimmyGeers我找到了你的解决方案,请看看我的编辑! –

0

您可能已经创建了另一个网页或网络表单。或者你可能只是重新命名了webform的公共类。在Global.cs中,该控件已注册或存在于您意外创建的第一个Web窗体中。删除并创建粘贴您的代码,它会很好

相关问题