1

Umbraco で、メインの Umbraco マスター ページを継承する通常の Web フォーム ページを作成することは可能ですか?

私のクライアントには、CMS のコンテキスト外のページで実行する必要があるいくつかの複雑な機能が必要です。

「通常の」ページのコンストラクター内から手動で Umbraco コンテキストを起動できるかどうか疑問に思います。現時点では、エラーが発生します:

タイプ 'System.Web.HttpUnhandledException' の例外がスローされました。---> System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。umbraco.item..ctor(IDictionary 要素、IDictionary 属性) umbraco.presentation.templateControls.ItemRenderer.GetFieldContents(アイテム アイテム) umbraco.presentation.templateControls.ItemRenderer.ParseMacros(アイテム アイテム) umbraco.presentation.templateControls.Item .OnInit(EventArgs e) で System.Web.UI.Control.InitRecursive(コントロールの名前付けコンテナー) で System.Web.UI.Control.InitRecursive(コントロールの名前付けコンテナー) で

ありがとうクリス

4

3 に答える 3

2

代替テンプレートを使用して、コンテンツ ページを関連付けずにテンプレートを直接参照できます。

次の方法で参照できます。

http://www.yourdomain.com/page.aspx?altTemplate=テンプレート名

http://www.yourdomain.com/page/templatename.aspx

これにより、ユーザーはノードを削除できなくなります。

それは役に立ちますか?

于 2013-01-16T17:26:57.730 に答える
1

あなたが求めていることを達成できると思います。

ページを Umbraco の制御から外す通常の方法は、web.config キー umbracoReservedUrls および umbracoReservedPaths を使用することです。これらは 4.11.1 でインストールされたキーです。

<add key="umbracoReservedUrls" value="~/config/splashes/booting.aspx,~/install/default.aspx,~/config/splashes/noNodes.aspx,~/VSEnterpriseHelper.axd" />
<add key="umbracoReservedPaths" value="~/umbraco,~/install/" />

第 2 に、トップ レベルのマスター ページに umbraco アイテムやマクロなどが含まれていない場合は、Page PreInit イベント中にいつでもマスターページに切り替えることができます。

protected void Page_PreInit(Object sender, EventArgs e)
{
    this.MasterPageFile = "/umbraco/masterpages/default.master";
}

または、@BeaverProj が概説する手法を使用することもできます。

編集

あなたのコメントを見ると、umbraco の「コンテキスト」にいなくても umbraco データを取得できると思います。cms.dll および businesslogic.dll へのプロジェクト参照を追加すると (umbraco はそれらをビンにドロップします)、ラッパー コントロールなしで umbraco フレームワークを使用できます。たとえば、内部の editMacro.aspx ページでは、フレームワークを直接使用しています。

                <asp:DropDownList OnPreRender="AddChooseList" runat="server" ID="macroPropertyType"
                    DataTextFormatString="" DataTextField='macroPropertyTypeAlias' DataValueField="id"
                    DataSource='<%# GetMacroPropertyTypes()%>' SelectedValue='<%# ((umbraco.cms.businesslogic.macro.MacroPropertyType) DataBinder.Eval(Container.DataItem,"Type")).Id %>'>
                </asp:DropDownList>
于 2013-01-17T09:33:51.463 に答える
1

U umbraco マスター ページから継承して、このようにマスターページを手動で指定できます

MasterPageFile="../masterpages/umbracoPage.Master"

これは、.aspxこのページをplugin directory

于 2013-01-16T10:40:54.067 に答える