C# 如何将“允许拉伸”应用于所有sitecore媒体img标记?

C# 如何将“允许拉伸”应用于所有sitecore媒体img标记?,c#,asp.net,sitecore,image-resizing,sitecore-media-library,C#,Asp.net,Sitecore,Image Resizing,Sitecore Media Library,如何使“允许拉伸”属性应用于sitecore从媒体库插入媒体时创建的所有标记 我知道您可以使用单个的标记设置allow stretch属性,但我希望全局应用此设置,以便每当用户将媒体库中的媒体插入页面时,生成的标记在默认情况下已经应用了“as=1”属性 当前,每当用户在我的web应用程序中插入媒体库中的媒体时,sitecore创建的图像标记如下所示: <img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDD

如何使“允许拉伸”属性应用于sitecore从媒体库插入媒体时创建的所有标记

我知道您可以使用单个的
标记设置allow stretch属性,但我希望全局应用此设置,以便每当用户将媒体库中的媒体插入页面时,生成的标记在默认情况下已经应用了“as=1”属性

当前,每当用户在我的web应用程序中插入媒体库中的媒体时,sitecore创建的图像标记如下所示:

<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&amp;w=709" />`
<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&amp;w=709&as=1" />
`
但我希望它看起来像这样:

<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&amp;w=709" />`
<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&amp;w=709&as=1" />

请注意,我提供的第二个img标记末尾的as=1

有人知道如何做到这一点吗


我使用的是Sitecore 6.5,您可以创建一个类似的扩展方法,并将AllowStretch属性设置为true。您还可以在httprequestbegin管道中添加进程,并将AllowStretch分配给所有媒体文件。

您可以创建类似的扩展方法,并将AllowStretch属性设置为true。您还可以在httprequestbegin管道中添加一个进程,并将AllowStretch分配给所有媒体文件。

您可以创建自己的
MediaProvider
实现,并将
AllowStretch
设置为始终为true。从
Sitecore.Resources.Media.MediaProvider继承并重写
GetMediaUrl()
方法:

namespace MyCustom.Media
{
  public class MediaProvider : Sitecore.Resources.Media.MediaProvider
  {
    public override string GetMediaUrl(MediaItem item)
    {
      Assert.ArgumentNotNull((object) item, "item");
      return this.GetMediaUrl(item, MediaUrlOptions.Empty);
    }

    public override string GetMediaUrl(MediaItem item, MediaUrlOptions options)
    {
      options.AllowStretch = true;
      return base.GetMediaUrl(item, options);
    }
}
然后在配置中,将媒体提供程序修补到您的自定义实现:

<mediaProvider type="MyCustom.Media.MediaProvider, MyCustom.Kernel"/>


编辑:正如Maras所建议的,尝试重写重载的
GetMediaUrl(MediaItem项,MediaUrlOptions)
方法。

您可以创建自己的
MediaProvider
实现,并将
AllowStretch
设置为始终为true。从
Sitecore.Resources.Media.MediaProvider继承并重写
GetMediaUrl()
方法:

namespace MyCustom.Media
{
  public class MediaProvider : Sitecore.Resources.Media.MediaProvider
  {
    public override string GetMediaUrl(MediaItem item)
    {
      Assert.ArgumentNotNull((object) item, "item");
      return this.GetMediaUrl(item, MediaUrlOptions.Empty);
    }

    public override string GetMediaUrl(MediaItem item, MediaUrlOptions options)
    {
      options.AllowStretch = true;
      return base.GetMediaUrl(item, options);
    }
}
然后在配置中,将媒体提供程序修补到您的自定义实现:

<mediaProvider type="MyCustom.Media.MediaProvider, MyCustom.Kernel"/>


编辑:正如Maras所建议的,尝试覆盖重载的
GetMediaUrl(MediaItem项,MediaUrlOptions)
方法。

我用新的替换了配置中现有的mediaProvider,并创建了自己的媒体提供程序实现,但没有改变任何内容。我还能错过什么?Img标记仍然没有as=1…我想您应该重写
公共虚拟字符串GetMediaUrl(MediaItem项,MediaUrlOptions)
方法,并在返回'base.GetMediaUrl'之前设置
options.AllowStretch=true
。@marasumielak您是对的。在我的特定案例中使用的方法是GetMediaUrl(MediaItem项,MediaUrlOptions选项),因此我所要做的就是重写该方法。我用新的方法替换了配置中现有的mediaProvider,并创建了自己的媒体提供程序实现,但它没有改变任何内容。我还能错过什么?Img标记仍然没有as=1…我想您应该重写
公共虚拟字符串GetMediaUrl(MediaItem项,MediaUrlOptions)
方法,并在返回'base.GetMediaUrl'之前设置
options.AllowStretch=true
。@marasumielak您是对的。在我的具体案例中使用的方法是GetMediaUrl(MediaItem项,MediaUrlOptions选项),因此我所要做的就是重写该方法。