我有一个名为lcont.ascx
的用户控制文件。此lcont
已被拖入母版页。
现在我想在母版页中创建一个lcont
类型的公共函数,但masterpage.cs
无法识别lcont
(说'找不到类型或命名空间lcont(是你在构建时错过了using指令或引用。)
为什么呢?我之前使用过这种方法,但它确实有用。
这是我的母版页:
<%@ Register src="Usercontrol/lcont.ascx" tagname="lcont" tagprefix="uc1" %>
<div class="container" >
<form id="form1" runat="server">
<div class=" row ">
<div class="col-lg-12">
<uc3:Header ID="Header1" runat="server" />
</div>
</div>
<div class="col-lg-3" style=" background:rgb(245,245,245); margin-right:1%; min-height:500px; " >
<uc1:lcont ID="lcont1" runat="server" />
</div>
这里的代码背后是:
public lcont getlcont()
{
return lcont1;
}
实际上我想要的是访问ASPX页面中的用户控件ID。用户控件当然包含在母版页中。除此之外,我还需要解决这个问题吗?
答案 0 :(得分:2)
如果您在母版页中实现了lcont
,那么您肯定可以创建公共函数
类型为lcont
。
你这样做的方式绝对正确 - 究竟应该怎么做。
据我所知,我认为问题出在用户控件的类名中。您在公共函数中使用的lcont
应该是lcont
用户控件的类名;但有时类名不是用户控件的文件名。我的意思是如果你的文件名是lcont.ascx
,你假设类名是lcont
- 在这种情况下你的代码会起作用;但有时候班级名称是foldername_usercontrolfilename
- 在这种情况下,你的代码将无效。
那应该怎么办?
lcont.ascx
页面的第一行。有一个名为Inherit
的属性。检查其值,lcont
不是foldername_lcont
。lcont.ascx.cs
文件中的类声明。它可能是public partial class foldername_lcont : System.Web.UI.UserControl
。将其更改为public partial class lcont : System.Web.UI.UserControl
。现在,您的母版页将识别lcont
。
有关详情,请参阅https://unschoolingcode.wordpress.com/2014/10/16/accessing-usercontrols-id-in-the-aspx-page/