Asp.net 如何让Sitecore(和我的浏览器)使用打印布局?

Asp.net 如何让Sitecore(和我的浏览器)使用打印布局?,asp.net,http,printing,sitecore,sitecore6,Asp.net,Http,Printing,Sitecore,Sitecore6,我正在添加一些支持,以良好的打印机友好格式打印我网站的特定页面。所以我做的第一件事就是创建一个或多或少的空白布局,我可以将内容放入其中。然后我转到一个内容页,并将此布局分配给演示细节中的“打印”设备 这似乎没有任何作用。我仍然在打印预览上获得与定义任何打印设置之前看到的完全相同的输出。老实说,我不完全确定这应该如何运作。大概,我的浏览器必须使用新的用户代理(??)再次请求页面,以使Sitecore返回页面的不同呈现。。。但我已经尝试过Firefox、Chrome和IE,从我的“默认”设备中得到了

我正在添加一些支持,以良好的打印机友好格式打印我网站的特定页面。所以我做的第一件事就是创建一个或多或少的空白布局,我可以将内容放入其中。然后我转到一个内容页,并将此布局分配给演示细节中的“打印”设备

这似乎没有任何作用。我仍然在打印预览上获得与定义任何打印设置之前看到的完全相同的输出。老实说,我不完全确定这应该如何运作。大概,我的浏览器必须使用新的用户代理(??)再次请求页面,以使Sitecore返回页面的不同呈现。。。但我已经尝试过Firefox、Chrome和IE,从我的“默认”设备中得到了同样不想要的输出


必须缺少一些明显的内容?

默认情况下,当您要打印的页面上有
?p=1
查询字符串值时,将使用打印设备。浏览器中的打印预览只是使用默认设备预览页面

试着把这个查询字符串放在地址中,看看你是否得到了预期的布局


正如您所指出的,可以通过浏览器代理切换设备,但这在这里没有用处。这将主要用于移动设备检测。

要在锚定单击时动态访问打印设备,请执行以下操作

default.aspx

  <asp:HyperLink ID="hlPrintLink" runat="server">
</asp:hyperlink>

啊。。。是的,错过了一些很容易的事情。谢谢Sean。基本上,你可以找到是什么让它在设备上使用某个布局,可以在:/sitecore/content/layout/devices/Det中找到。默认的printlayout称为Print,它有一个查询字符串,正如Sean所写的那样是“?p=1”,但你可以更改它。将?p=1添加到URL中对我来说很好,可以获得我期望的布局,但是从浏览器打印(URL中没有“?p=1”)仍然无法解析为打印布局。我错过了什么?是否需要在打印设备上的“查询字符串”属性之外的其他位置配置设备检测?您可以使用JavaScript编辑目标,如下链接所示:。也许有更好的办法?
HospitalDirectionsPageItem objHospital = Sitecore.Context.Item;   
         string deviceName = "print";
            DeviceItem deviceItem = Sitecore.Context.Database.Resources.Devices.GetAll().Where(d => d.Name.ToLower() == deviceName.ToLower()).First();

            if (deviceItem != null)
            {
                hlPrintLink.NavigateUrl = Sitecore.Links.LinkManager.GetItemUrl(objHospital) + "?" + deviceItem.QueryString;

            }