【问题标题】:asp.net usercontrol odd behaviourasp.net usercontrol 奇怪的行为
【发布时间】:2009-06-15 15:24:56
【问题描述】:

我有一个要在项目中使用的用户控件。

如果我这样做(参考控件中的站点地图)

<%@ Register TagPrefix="OS" Namespace="OS_Layouts" Assembly="OSControlLibrary, Version=0.0.0.0, Culture=neutral, PublicKeyToken=0831306e55dc1c27" %>

<html><body>
<OS:OSmenu runat="server" ID="men1" SiteMap="siteMapDataSource1"  />
  <asp:SiteMapDataSource ShowStartingNode="false" SiteMapProvider="CombinedNavSiteMapProvider"
    ID="siteMapDataSource1" runat="server" />
</body </html>

我收到一个奇怪的错误。

解析器错误消息:无法从“SiteMap”属性的字符串表示“siteMapDataSource1”创建“System.Web.UI.WebControls.SiteMapDataSource”类型的对象。

如果我这样做,它工作正常。 (在页面加载期间在代码中添加站点地图)

<%@ Register TagPrefix="OS" Namespace="OS_Layouts" Assembly="OSControlLibrary, Version=0.0.0.0, Culture=neutral, PublicKeyToken=0831306e55dc1c27" %>
<script runat=server>

protected void Page_Load(object sender, EventArgs e)
  {
   men1.SiteMap = siteMapDataSource1;           
  }
</script>
<html><body>
<OS:OSmenu runat="server" ID="men1"  />
  <asp:SiteMapDataSource ShowStartingNode="false" siteMapProvider="CombinedNavSiteMapProvider" ID="siteMapDataSource1" runat="server" />
</body> </html>

我正在做的唯一“聪明”的事情是使用 'aspnet_compiler' 和 'aspnet_merge' 将包含我的用户控件的 .dll 创建到一个可以在其他项目中使用的单个 dll 中。

我是否误解或配置错误?

谢谢 编辑:一些进一步的信息。

所以我的 aspx.cs 看起来像这样 我总是得到“失败!”

using System;
using System.Web.UI.WebControls;

public partial class OSmenu : System.Web.UI.UserControl
{  

    public String SiteMapID { get; set; }


    protected void Page_Load(object sender, EventArgs e)
    {

    if (SiteMapID == "") return;
       SiteMapDataSource foo = Page.FindControl(SiteMapID) as SiteMapDataSource;
        if (foo == null)
        {
            Response.Write("</br> fail!");
        }
        else
        {
            Response.Write("/<br> ok!" + foo.UniqueID);
        }
    }



}

由于控件的主机页面是共享点母版页,所有这一切都稍微复杂了,我无法为控件进行调试,但我可以为母版页本身进行调试!

【问题讨论】:

    标签: asp.net user-controls


    【解决方案1】:

    在你的用户控制中试试这个:

    SiteMapDataSource ds = this.Page.FindControl(this.SiteMap) as SiteMapDataSource;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2017-03-24
      相关资源
      最近更新 更多