Sharepoint RichImageField设置默认图像

Sharepoint RichImageField设置默认图像,sharepoint,sharepoint-branding,Sharepoint,Sharepoint Branding,在我的自定义页面布局中,我声明了一个RichImageField <PublishingWebControls:RichImageField id="InteriorHeaderImage" FieldName="InteriorHeaderImage" InputFieldLabel="Header Image" runat="server" DisplayWidth="960" DisplayHeight="242" /> 目前我无法测试这一点,但是RichImageFie

在我的自定义页面布局中,我声明了一个RichImageField

<PublishingWebControls:RichImageField id="InteriorHeaderImage" FieldName="InteriorHeaderImage" InputFieldLabel="Header Image"  runat="server" DisplayWidth="960" DisplayHeight="242"  />

目前我无法测试这一点,但是
RichImageField
字段控件有一个可以设置的属性。您可以尝试以声明的方式设置它吗

也许这会有用

<PublishingWebControls:RichImageField id="InteriorHeaderImage" Value="[it should be this easy]" />


或者,您可以为页面布局设置代码隐藏,这应该比操作
ImageFieldValue
(根据您的链接)更容易。

ImageFieldValue继承自HtmlTagValue类。ImageFieldValue有一个接受完整值的构造函数?

您可以创建一个
ImageFieldValue
内联吗

<PublishingWebControls:RichImageField id="InteriorHeaderImage" runat="server"
    DefaultImageURL='<%# new ImageFieldValue("<img src=\"test.png\" />") %>' />


只有在某个时候调用控件的
DataBind()
方法时,这才有效。

我也有同样的需要,最终创建了一个自定义控件,该控件将在预渲染时将占位符/默认图像添加到控件中。然后将自定义控件添加到页面布局中RichImageField控件的旁边

代码:

        if ((PublishingPage.IsPublishingPage(SPContext.Current.ListItem)) &&
            (SPContext.Current.FormContext.FormMode == SPControlMode.Edit || SPContext.Current.FormContext.FormMode == SPControlMode.New))
        {
            RichImageField image = (RichImageField)this.Parent.FindControl("rifPageImage");
            if (image != null)
            {
                ImageFieldValue imgValue = (ImageFieldValue)image.Value;
                if (imgValue.ImageUrl == string.Empty)
                {
                    image.Value = new ImageFieldValue("<img src='/_layouts/images/GD/placeholder.png' />");
                }
            }
        }
if((PublishingPage.IsPublishingPage(SPContext.Current.ListItem))&&
(SPContext.Current.FormContext.FormMode==SPControlMode.Edit | | SPContext.Current.FormContext.FormMode==SPControlMode.New))
{
RichImageField image=(RichImageField)this.Parent.FindControl(“rifPageImage”);
如果(图像!=null)
{
ImageFieldValue imgValue=(ImageFieldValue)image.Value;
if(imgValue.ImageUrl==string.Empty)
{
image.Value=新的ImageFieldValue(“”);
}
}
}

在母版页库中设置布局时,是否尝试为字段提供默认值

<Property Name="RichImageFieldName" Value="<![CDATA[<IMG SRC="images/pathtoimage.jpg"></IMG>]]>" />

安德罗·塞尔瓦的回答是正确的,但我必须稍微修改一下代码。因为我的代码隐藏也是自定义的,而不是使用:

RichImageField image = (RichImageField)this.Parent.FindControl("rifPageImage");
我用过:

Protected RichImageField rifPageImage;

我只是把所有的图片换成了图片。由于.cs文件未真正链接到我的.aspx文件,因此我得到了此.Parent.FindControl的空值。

非常感谢您的输入。我测试了您的想法,但正如预期的那样,value属性不需要表示ImageFieldValue对象的字符串。我收到以下异常:无法从“Value”属性的字符串表示形式“test.png”创建类型为“System.object”的对象。好主意,我尝试了你的想法,但不幸的是没有任何运气。我想我必须尝试代码隐藏方法。
RichImageField image = (RichImageField)this.Parent.FindControl("rifPageImage");
Protected RichImageField rifPageImage;