我正在继承sitecore实现,我一直在尝试调试成员资格表单。成员资格页面包含一个成员资格子布局,其中包含一个简单的表单(first,last,address,...)。当我在本地计算机上进行调试时,我填写表单并单击“提交”。页面会回发,一旦点击基本布局,Sitecore.Context.Item
就是NULL
。
有趣的是,如果我在Sitecore中预览页面,当我回发一切正常时,这让我相信这只是我的web.config或其他一些配置文件中的一些内部设置问题。
以下是在PREVIEW模式和常规模式下页面第一次点击和回发的一些变量的内容:
首次点击(预览模式)
Sitecore.Context
.Data.RawUrl = /?sc_itemid=%7b2A58FFA4-D16A-4EAB-8298-9398ACFDDEFB%7d&sc_mode=preview&sc_lang=en
.Database = master
.Item,Database = master
.Item.Id = {2A58FFA4-D16A-4EAB-8298-9398ACFDDEFB}
.Item.Name = Website_Membership
.RawUrl = /?sc_itemid=%7b2A58FFA4-D16A-4EAB-8298-9398ACFDDEFB%7d&sc_mode=preview&sc_lang=en
.Request.ItemPath = /sitecore/content/home/
回发(预览模式)
Sitecore.Context
.Data.RawUrl = /Sites/CMS/Layouts/Membership Layout.aspx?sc_itemid=%7b2A58FFA4-D16A-4EAB-8298-9398ACFDDEFB%7d&sc_mode=preview&sc_lang=en
.Database = master
.Item,Database = master
.Item.Id = {2A58FFA4-D16A-4EAB-8298-9398ACFDDEFB}
.Item.Name = Website_Membership
.RawUrl = /Sites/CMS/Layouts/Membership Layout.aspx?sc_itemid=%7b2A58FFA4-D16A-4EAB-8298-9398ACFDDEFB%7d&sc_mode=preview&sc_lang=en
.Request.ItemPath = /sitecore/content/home/sites/cms/layouts/membership layout
首先点击(常规模式)
Sitecore.Context
.Data.RawUrl = /SomePath/Website_Membership.aspx
.Database = web
.Item,Database = web
.Item.Id = {2A58FFA4-D16A-4EAB-8298-9398ACFDDEFB}
.Item.Name = Website_Membership
.RawUrl = /SomePath/Website_Membership.aspx
.Request.ItemPath = /sitecore/content/home/somePath/website_membership
回发(常规模式)
Sitecore.Context
.Data.RawUrl = /Sites/CMS/Layouts/Membership Layout.aspx
.Database = web
.Item = NULL
.RawUrl = /Sites/CMS/Layouts/Membership Layout.aspx
.Request.ItemPath = /sitecore/content/home/sites/cms/layouts/membership layout
有没有人在此之前经历过这样的事情和/或你能想出出现这种情况的原因吗?
修改: 在sdn.sitecore论坛上Kevin Buckley:
我在想控制适配器 'form.browser'丢失了。这应该 在app_browsers文件夹中。
我只想添加一个注释。 app_browsers文件夹中缺少这些文件但我几天前通过从干净的sitecore安装中复制它们手动添加了这些文件。这似乎没有帮助。
答案 0 :(得分:2)
您似乎回复了成员资格layout.aspx,因此您的上下文项为空,因为成员资格Layout.aspx的路径与项目无关。
你如何控制回发网址?默认情况下,您遇到的问题不会发生。我不记得具体但有些方法或属性会返回sitecore项目布局文件而不是url,正如您通常所期望的那样。您使用的是server.transfer吗?正常的回发将默认为相同的网址,你这样做吗?
答案 1 :(得分:1)
检查web.config中的<sites>
部分;听起来像你指着错误的数据库,检查你正在使用的<site>
是使用Master还是Web。这可以解释为什么它在预览中工作正常。
答案 2 :(得分:1)
今天我在回传后升级到最新的Sitecore 6.5 rev 111123时遇到了与 Sitecore.Context.Item == null 相同的问题
事实证明问题开始出现是因为升级过程中删除了 App_Browsers \ Form.browser 文件。
当我恢复它时,这个问题就消失了。 希望这会有所帮助。
答案 3 :(得分:1)
在更新到目前推荐的版本--Sitecore 6.4.1后,我遇到了同样的问题。 在我的情况下,你可以看到,我的主要布局作为回发动作的结构 - 这解释了我在前端的Postbacks的问题,而在Sitecore预览中一切都很好。 我通过在MainLayout
中添加action =#来纠正这个问题