Если вы хотите, чтобы GCF в проекте-a считывал из GCS ведро "bucket-b" в проекте-b. Затем предоставьте PROJECT-B@appspot.gserviceaccount.com разрешение IAM storage.objectViewer в проекте b (или конкретно в bucket-b).
Вы можете добавить свойство к коду пользовательского элемента управления, например:
[PersistenceMode(PersistenceMode.InnerProperty)]
public List<ListItem> Items
{
get;
set;
}
Ваша разметка будет:
<my:MyListControl runat="server">
<Items>
<asp:ListItem/>
</Items>
</my:myListControl>
Чтобы сделать так, чтобы ListItem мог быть вашим собственным элементом списка (который я рекомендую делать в отличие от использования asp.net.) Вы захотите создать свой собственный класс.
Вот пример управления сервером, который я использую (я удалил много шума, так как это всего лишь скелет):
[ToolboxData("<{0}:Menubar runat=server></{0}:Menubar>")]
[System.ComponentModel.DesignTimeVisible(false)]
public class Menubar : WebControl, IPostBackEventHandler
{
private List<MenuItem> _menuItems = new List<MenuItem>();
[PersistenceMode(PersistenceMode.InnerProperty)]
public List<MenuItem> MenuItems
{
get
{
return _menuItems;
}
}
}
[ToolboxItem(false)]
[ParseChildren(true, "MenuItems")]
public class MenuItem
{
private string _clientClick;
private List<MenuItem> _menuItems = new List<MenuItem>();
[Localizable(true)]
public string Title { get; set; }
public string Href { get; set; }
public string Id { get; set; }
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public List<MenuItem> MenuItems
{
get { return _menuItems; }
set { _menuItems = value; }
}
}
Теперь я могу использовать это как:
<my:Menubar runat="server" ID="menuBar">
<MenuItems>
<my:MenuItem Title="Save" Href="javascript:saveItem(this);" />
<my:MenuItem Title="Print" Href="javascript:void(0);">
<MenuItems>
<my:MenuItem Title="Preview" Href=""/>
<my:MenuItem Title="To Pdf" Href="javascript:"/>
</MenuItems>
</my:MenuItem>
</MenuItems>
</my:Menubar>
Используйте asp: Repeater, а затем привяжите его к списку объектов, которые вы хотите в своей хлебной крошке. Вы можете использовать шаблон для настройки самих элементов и разделителей.