У меня есть usercontrol, который я пытаюсь использовать в проекте.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>
Я получаю странное сообщение об ошибке.
Parser Сообщение об ошибке: Невозможно создать объект типа «System.Web.UI.WebControls.SiteMapDataSource» из его строкового представления «siteMapDataSource1» для имущества «Картой сайта».
Если я это сделаю, он отлично работает. (Добавить карту сайта в коде во время PageLoad)
<%@ 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-файл, содержащий мои UserControls в одну DLL я могу использовать в другие проекты.
Я неправильно понял или неправильно сконфигурировал?
Thanks EDIT: дополнительная информация.
Итак, мой aspx.cs выглядит так: Я всегда получаю сообщение «Fail!».
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);
}
}
}
Все это немного усложнено тем фактом, что страница хоста для управления является Masterpage SharePoint, и я не могу отладки работать для управления, я могу для самой MasterPage!