设想:我的所有页面都有一个非常标准的母版页。它包括常用的登录表单和要在每个页面上提取的其他动态列表。网页设计师已经可以修改每个页面的中心内容占位符。但是,母版页的设计和布局仍然在我的项目中,对设计的任何修改都必须在 Visual Studio 中进行,并且项目需要重新编译和重新部署。

通过 CMS 提供几乎完全访问设计母版页的最佳方式是什么?我可以识别的一些问题是包含任何动态列表或特定控件(例如登录表单)。

谢谢。

有帮助吗?

解决方案

您是否可以将占位符放在母版页中代替设计者应该允许编辑的区域?由于母版页只能在Visual Studio中编辑,因此它可能是您此时唯一可行的选项。这种方法的一个问题是放在占位符中的内容不太可能有效,因为您可能在一个占位符中打开标记,在另一个占位符中关闭标记。

<html>
<head>
<title></title>
<asp:PlaceHolder ID="headerContent" runat="server"></asp:PlaceHolder>
</head>
<body>

<asp:PlaceHolder ID="beforeContent" runat="server"></asp:PlaceHolder>

<asp:PlaceHolder ID="centralContent" runat="server"></asp:PlaceHolder>

<asp:PlaceHolder ID="afterContent" runat="server"></asp:PlaceHolder>

</body>
</html>

我知道它很难看,但它可能会给你你需要的控制(只要你不介意XHTML验证器一直警告你)。您在占位符中放置的内容可能是您的用户控件或文字内容等等,但您必须动态加载它。

思想?

编辑:这不起作用。 PlaceHolder将呈现<div>标签,这会使事情变得混乱。也许您可以扩展PlaceHolder并覆盖它呈现HTML的方式。

其他提示

除非您想在门户网站内托管您的内容,否则我不知道对此的完美答案。

如果他们设计的位只是页面的外观和感觉,那么这可以通过css控制,你可以允许他们使用不同的css文件创建主题。

这确实是一个有趣的问题,并没有完美的解决方案。我曾在一家电子商务公司工作过这个问题,坦率地说,我只是要求设计师在很多情况下为我提供html和css,然后我会抓住html片段和css并将它们添加到我的项目中。是的,这很乏味......

然后我们构建了一个cms,设计师可以将其html复制并粘贴到html编辑器中,我们会将这些html存储在数据库中。我的网络应用程序会在运行时从数据库中获取这些内容。这解决了一些问题,但并非全部,因为它没有让他们完全控制网页的设计。

最重要的是,您需要标准设计师如何向您提交作品。如果你有,并且你可以指望html和css,那么你可以想到可能围绕它建立一个CMS。在RAD的这些日子里,我发现使用html和css更容易处理,只需根据需要将这些部分复制并粘贴到我的母版页和其他页面中。

虽然这不是CMS的答案,但您可以让设计人员在Expression Web中打开母版页。我不会说它是世界上最伟大的工具,但我让设计师在Expression中完成了母版设计并取得了良好的效果。

然而,有一个痛点。如果打开整个项目,设计人员会将文件后面的代码视为单独的项目,而不是像Visual Studio中看到的树视图一样。

我想你可以通过CMS检查出与主页一起使用的母版页,但没有内置的方法可以做到这一点,我也不知道第三方工具来做到这一点。希望Expression Web 3能让事情变得更轻松。

如果您有CMS,则可以更好地完全控制页面内容。如果CMS无法做到,您可以编写CMS的扩展或插件模块,然后您的设计人员可以将其放到CMS页面编辑器中的页面上。

如果您的CMS不支持插件模块,您可能会尝试强制CMS和母版页执行他们不打算执行的操作。

如果上述情况在您的情况下不起作用,请考虑另一个想法:在母版页上放置内联框架,用于托管在CMS中编辑的页面。

希望有所帮助。

有趣的问题,
我自己不久前也涉足过这个领域。

当不涉足 Photoshop 或 Flash 领域时,这些网页设计师的知识有多少?

如果使用 DIY-CMS,也许您可​​以模板化最容易受影响的对象,例如。G。制作一个通用的(如您感觉如何,而不是他们感觉如何;-))列表和输入设计的方式(如果适用)。

只要您建立了一个完整的框架,通过 CMS 处理设计人员可用的属性,就不需要重新编译......但当然,我可以很容易地看到开发人员(阅读:我)跌跌撞撞地陷入了束缚的差距。

恐怕最简单且唯一可管理的路径是标准化设计师向您表达他们的需求和愿望的方式......它只是不会自行编码......

您能提供一些例子吗?

好吧,使用 Web应用程序项目页面直到被访问才编译(链接是2005但它仍然适用)。这意味着实际的.aspx(和.ascx等)页面以其原始状态部署。设计人员可以更新服务器上页面的格式,并在下次有人请求内容时编译更新。

允许设计人员通过您网站的用户界面下载当前页面并上传替换件,这将是相对微不足道的。但是,它不是很安全(并且可能永远不应该完成)。最好允许设计人员通过网络访问虚拟目录,以便他们可以使用 Expression Web 。通过这种方式,设计师可以打开当前的网站,编辑页面,并将结果直接推送到制作中(这可能是可怕的)。


由于我因为得到正确的答案而被投票,我要指出一些事情。

网站项目按需编译代码隐藏和页面。如果您需要定期更新代码,那么这是一个不错的解决方案。

可以将Web应用程序项目配置为可更新。所有代码隐藏和类都被编译成一个程序集,所有aspx,ascx等页面都按需部署和编译。这意味着设计人员可以连接到网站,更新布局和静态内容,并在下一个请求中查看更改。

这是我首选的部署方法。我在野外有一些Web应用程序项目,可更新的aspx文件与我的dll一起部署。这个想法是网站的用户可以改变UI而不必向我提交更新,因此我可以为他们重新编译它。

.master只是一个文本文件。他们可以随意编辑它们。他们当然没有做任何事情需要你重新编译代码才能查看它。这是Master Pages的最大胜利:设计师和其他非程序员可以手动编辑它们而不会破坏任何东西。

让他们访问源代码管理下的文件,让他们疯狂。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top