繁体   English   中英

创建一个依赖于Umbraco母版页的“普通”ASP.NET页面

[英]Create a “normal” ASP.NET page which depends on an Umbraco master page

在Umbraco中是否可以创建一个继承主要Umbraco母版页的普通webforms页面?

我的客户需要一些复杂的功能,需要在CMS的上下文之外的页面中完成。

我想知道是否可以从“普通”页面的构造函数中手动启动Umbraco上下文。 目前我刚收到错误:

抛出了类型'System.Web.HttpUnhandledException'的异常。 ---> System.NullReferenceException:对象引用未设置为对象的实例。 at umbraco.item..ctor(IDictionary elements,IDictionary attributes)at umbraco.presentation.templateControls.ItemRenderer.GetFieldContents(Item item)at umbraco.presentation.templateControls.ItemRenderer.ParseMacros(Item item)at umbraco.presentation.templateControls.Item .OnInit(EventArgs e)位于System.Web.UI.Control.InitRecursive(Control namingContainer)的System.Web.UI.Control.InitRecursive(Control namingContainer)

谢谢克里斯

您可以使用备用模板直接引用模板,而无需与其关联的内容页面。

您可以通过以下方式引用它:

http://www.yourdomain.com/page.aspx?altTemplate=templatename

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

这将阻止用户删除节点。

这有帮助吗?

你可以从umbraco母版页继承,像这样手动指定你的主页

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

这适用于.aspx页面,您在plugin directory中指定此页面

我认为你可以实现你的要求;

将页面从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/" />

其次,如果您的顶级母版页不包含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会将它们放入bin中),然后你就可以使用没有包装器控件的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM