尝试访问我网站上的某个页面,得到一个空白的屏幕并决定再次尝试加载Visual Studio 2012并进行调试,现在我在页面加载时出现此错误:
An exception of type 'System.ArgumentException' occurred in cms.dll but was not handled in user code
并指向HeaderControl.ascx.cs
中的以下代码:
else if(new umbraco.cms.businesslogic.template.Template((Context.GetContent()).template).Alias == "TemplateLanguage")
此代码位于以下方法中:
public void LoadData()
{
_Location = HttpContext.Current.GetLocation();
if (Context.GetContent().NodeTypeAlias == "Home")
{
TheHomeHeaderPH.Visible = true;
ThePhonePH.Visible = true;
_MenuStyle = "var-nav nav-large";
LoadMenuTopControl();
LoadMenuMainControl();
}
else if(new umbraco.cms.businesslogic.template.Template((Context.GetContent()).template).Alias == "TemplateLanguage")
{
TheContentHeaderPH.Visible = true;
_MenuStyle = "nav-small";
LoadContentMenuTopControl();
LoadMenuLanguageControl();
}
else
{
MMG.BusinessLayer.Content theContent = MMG.BusinessLayer.Content.GetCached(Context.GetContent());
if (theContent.TemplateColor == "168C9C")
{
TheHomeHeaderPH.Visible = true;
_MenuStyle = "nav-small";
LoadMenuTopControl();
LoadMenuMainControl();
}
else
{
TheContentHeaderPH.Visible = true;
LoadContentMenuTopControl();
LoadContentMenuMainControl();
}
}
}
如何解决此问题? System.ArgumentException
说:{"No node exists with id '0'"}
答案 0 :(得分:1)
我猜这是(Context.GetContent()).template
以某种方式打破,我认为GetContent
是一种自定义扩展方法。
异常{"No node exists with id '0'"}
通常意味着您无法获取所请求的节点。
而是尝试
else if(new umbraco.cms.businesslogic.template.Template(umbraco.uQuery.GetCurrentNode().template).Alias == "TemplateLanguage")
如果这不起作用,则意味着您在CurrentNode不可用的上下文中运行代码。在这种情况下,您必须使用nodeId参数扩展LoadData方法。