0
我有一個用戶控件,我試圖在項目中使用。asp.net usercontrol奇怪的行爲
如果我做這樣的(參考網站地圖對照)
<%@ 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>
我得到一個奇怪的錯誤。
分析器錯誤消息:不能從它的字符串表示「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);
}
}
}
所有這一切都是輕微的事實爲控制主機頁面是SharePoint母版複雜,我無法調試,爲控制工作,我可以爲母版本身!