2

カスタム ページ レイアウトで、RichImageField を宣言します

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

レイアウトを使用してページが初めて作成されたときでも、コントロールに常に画像が表示されるように、デフォルトの画像を設定する方法を見つけようとしています。

理想的には、たとえば次のような宣言的なアプローチが必要です。

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

コントロールの value プロパティには ImageFieldValue オブジェクトが割り当てられているようですが、コード ビハインドで設定する方法をおそらく理解できますが、このアプローチは本来よりも難しいようです: http://msdn.microsoft.com/en- us/library/microsoft.sharepoint.publishing.fields.imagefieldvalue.aspx

解決策: 最終的に、ここで説明されているように、Microsoft.SharePoint.Publishing.PublishingLayoutPage から継承するクラス ファイルを作成して、ページ レイアウトのコード ビハインドを作成することになりました: http://msdn.microsoft.com/en-us/library/bb986729 .aspx

もちろん、コードは数行だけになりました。

protected void Page_Load(object sender, EventArgs e)
        {

            ImageFieldValue imageField = InteriorHeaderImage.Value as ImageFieldValue;
            if (imageField!=null)
            {
                if(string.IsNullOrEmpty(imageField.ImageUrl))
                    imageField.ImageUrl = "/Style Library/assets/images/img1small.jpg";
            }

        }
4

6 に答える 6

1

現時点ではこれをテストすることはできませんが、RichImageFieldフィールドコントロールにはValue設定可能なプロパティがあります。これを宣言的に設定してみてください。

多分これはうまくいくでしょうか?:

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

ImageFieldValueまたは、 (リンクに従って)操作するよりも簡単なページレイアウトのコードビハインドを設定することもできます。

于 2009-08-17T19:32:02.357 に答える
0

ImageFieldValue は HtmlTagValue クラスから継承します。ImageFieldValue には、完全な <img /> 要素を受け入れるコンストラクターがあります。<img src="test.png" /> のように、完全な <img /> 要素を使用してデフォルト値を設定しようとしましたか?

于 2009-08-18T06:00:10.157 に答える
0

ImageFieldValueインラインを作成できますか?

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

これは、コントロールのDataBind()メソッドがある時点で呼び出された場合にのみ機能します。

于 2009-08-18T18:43:23.370 に答える
0

私は同じ必要性を持っていて、プレースホルダー/デフォルトの画像を事前レンダリングのコントロールに追加するカスタム コントロールを作成することになりました。カスタム コントロールは、ページ レイアウトの 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' />");
                }
            }
        }
于 2012-06-22T13:14:50.880 に答える
0

レイアウトをマスターページ ギャラリーにプロビジョニングするときに、フィールドの既定値を指定しようとしましたか?

<Property Name="RichImageFieldName" Value="<![CDATA[<IMG SRC="images/pathtoimage.jpg"></IMG>]]>" />
于 2013-03-28T20:00:44.563 に答える