C# 如何将“允许拉伸”应用于所有sitecore媒体img标记?
如何使“允许拉伸”属性应用于sitecore从媒体库插入媒体时创建的所有标记 我知道您可以使用单个的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
标记设置allow stretch属性,但我希望全局应用此设置,以便每当用户将媒体库中的媒体插入页面时,生成的标记在默认情况下已经应用了“as=1”属性
当前,每当用户在我的web应用程序中插入媒体库中的媒体时,sitecore创建的图像标记如下所示:
<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&w=709" />`
<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&w=709&as=1" />
`
但我希望它看起来像这样:
<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&w=709" />`
<img alt="" height="500" width="709" src="~/media/EAF03CA5568245B59FDDCC4B8FBD83E4.ashx?h=500&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选项),因此我所要做的就是重写该方法。