名称xxx在当前上下文中不存在
本文关键字:上下文 不存在 xxx 名称 | 更新日期: 2023-09-27 18:10:41
我使用的是asp.net和Fileuploader的登录控件。当我离开<LoggedInTemplate>
外部的文件上传器控件时,它可以工作,但是当我试图将Fileuploader移动到<LoggedInTemplate>
内部时,我得到"名称xxx不存在于当前上下文中",它指的是c#。
<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>
Main Edit:您可以像这样访问嵌套在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
}
}
}
您可能已经创建了另一个网页或网页表单。或者,您可能只是为webform重命名了公共类。在Global.cs中,控件已注册或存在于您意外创建的第一个web表单中。删除并粘贴你的代码,它会很好