用户控件类型在母版页中的功能

时间:2014-10-15 04:16:24

标签: c# asp.net user-controls

我有一个名为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。用户控件当然包含在母版页中。除此之外,我还需要解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

如果您在母版页中实现了lcont,那么您肯定可以创建公共函数 类型为lcont

你这样做的方式绝对正确 - 究竟应该怎么做。

据我所知,我认为问题出在用户控件的类名中。您在公共函数中使用的lcont应该是lcont用户控件的类名;但有时类名不是用户控件的文件名。我的意思是如果你的文件名是lcont.ascx,你假设类名是lcont - 在这种情况下你的代码会起作用;但有时候班级名称是foldername_usercontrolfilename - 在这种情况下,你的代码将无效。

那应该怎么办?

  1. 检查lcont.ascx页面的第一行。有一个名为Inherit的属性。检查其值,lcont不是foldername_lcont
  2. 检查lcont.ascx.cs文件中的类声明。它可能是public partial class foldername_lcont : System.Web.UI.UserControl。将其更改为public partial class lcont : System.Web.UI.UserControl
  3. 现在,您的母版页将识别lcont

    有关详情,请参阅https://unschoolingcode.wordpress.com/2014/10/16/accessing-usercontrols-id-in-the-aspx-page/