Использование сети. SiteMap с динамическими URL (маршрутизация URL)

Просто расширите свое изображение RGB до RGBA, установив для A значение «1»:

rgba = np.dstack((rgb, np.ones(rgb.shape[:-1])))

, а затем используйте упомянутый вами метод композиции.

Если вы используете Подушку , вместо этого вы можете просто использовать:

imRGB.putalpha(alpha)
composite = PIL.Image.alpha_composite(imRGB, im2RGBA)

9
задан Jeff Atwood 21 January 2011 в 09:01
поделиться

2 ответа

Это в ответ на комментарий выше. Я не могу отправить полный код, но это в основном, как мой поставщик работает.

Предположим, что у Вас есть страница article.aspx, и она использует параметр строки запроса "идентификатор", чтобы получить и отобразить заголовок статьи и тело. Затем это находится в Web.sitemap:

<siteMapNode url="/article.aspx" title="(this will be replaced)" param="id" />

Затем Вы создаете этот класс:

public class DynamicSiteMapPath : SiteMapPath
{
  protected override void InitializeItem(SiteMapNodeItem item)
  {
    if (item.ItemType != SiteMapNodeItemType.PathSeparator)
    {
      string url = item.SiteMapNode.Url;
      string param = item.SiteMapNode["param"];

      // get parameter value
      int id = System.Web.HttpContext.Current.Request.QueryString[param];

      // retrieve article from database using id
      <write your own code>

      // override node link
      HyperLink link = new HyperLink();
      link.NavigateUrl = url + "?" + param + "=" + id.ToString();
      link.Text = <the article title from the database>;
      link.ToolTip = <the article title from the database>;
      item.Controls.Add(link);
    }
    else
    {
      // if current node is a separator, initialize as usual
      base.InitializeItem(item);
    }
  }
}

Наконец, Вы используете этого поставщика в своем коде точно так же, как Вы использовали бы статического поставщика.

<mycontrols:DynamicSiteMapPath ID="dsmpMain" runat="server" />

Мой класс более сложен, чем это, но это основы. Вместо того, чтобы использовать querystring параметр, Вы могли просто проанализировать дружественный URL, который Вы используете, и использование что вместо этого получить корректное содержание. Для уменьшения дополнительных поисков дб с каждым запросом можно добавить механизм кэширования к поставщику (заголовок статьи обычно не будет часто изменяться).

Надеюсь, это поможет.

7
ответ дан 4 December 2019 в 20:25
поделиться

Это - не полностью ответ на Ваш вопрос, я думаю, но возможно он дает Вам общее представление. Я однажды записал наследованию класса DynamicSiteMapPath SiteMapPath. Я использую пользовательский атрибут в каждом <siteMapNode> тег в Web.sitemap, как это:

<siteMapNode url="dynamicpage.aspx" title="blah" params="id" />

Затем класс DynamicSiteMapPath получает "идентификационное" значение параметра, получает содержание от базы данных и переопределяет в настоящее время представляемый узел объекта карты сайта с корректным заголовком и ссылкой. Это собирается брать немного работы, но при корректном выполнении это - очень аккуратный способ оказать динамическую поддержку страницы.

2
ответ дан 4 December 2019 в 20:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: