场景:我的所有页面都有一个非常标准的母版页。它包括通常的登录表单和其他要在每个页面上提取的动态列表。网页设计师已经可以修改每个页面的中心内容占位符。但是,母版页的设计和布局仍然在我的项目中,对设计的任何修改都必须在 Visual Studio 中进行,并且重新编译和重新部署项目。
通过 CMS 提供对设计母版页的近乎完全访问权限的最佳方式是什么?我可以识别的一些问题是包含任何动态列表或特定控件,例如登录表单。
谢谢。
场景:我的所有页面都有一个非常标准的母版页。它包括通常的登录表单和其他要在每个页面上提取的动态列表。网页设计师已经可以修改每个页面的中心内容占位符。但是,母版页的设计和布局仍然在我的项目中,对设计的任何修改都必须在 Visual Studio 中进行,并且重新编译和重新部署项目。
通过 CMS 提供对设计母版页的近乎完全访问权限的最佳方式是什么?我可以识别的一些问题是包含任何动态列表或特定控件,例如登录表单。
谢谢。
除非您想在门户中托管您的内容,否则我不知道这个问题的完美答案。
如果他们设计的位只是页面的外观和感觉,那么这可以由 css 控制,您可以允许他们使用不同的 css 文件创建主题。
这确实是一个有趣的问题,并且没有完美的解决方案。我曾在一家电子商务商店工作过这个问题,坦率地说,我只是要求设计师在很多情况下为我提供 html 和 css,然后我会抓取 html 和 css 并将它们添加到我的项目中。是的,这很乏味......
然后我们构建了一个 cms,设计师可以将他们的 html 复制并粘贴到 html 编辑器中,我们会将这些 html 片段存储在数据库中。我的网络应用程序会在运行时从数据库中获取这些内容。这解决了一些问题,但不是全部,因为它没有让他们完全控制网页的设计。
最重要的是,您需要对设计师如何将他们的作品提交给您制定标准。如果你有它,并且你可以依靠 html 和 css,那么你可以考虑围绕它构建一个 CMS。在 RAD 的今天,我发现使用交付给我的 html 和 css 并根据需要简单地将这些片段复制并粘贴到我的母版页和其他页面中更容易。
虽然这不是 CMS 的答案,但您确实可以让设计人员在 Expression Web 中打开母版页。我不会说它是世界上最伟大的工具,但我已经让设计师在 Expression 中完成母版页设计并取得了很好的效果。
然而,有一个痛点。如果打开整个项目,设计人员会将文件背后的代码视为单独的项目,而不是像 Visual Studio 中看到的树视图。
我想您可以通过 CMS 签出母版页以便与 Expression 一起使用,但是没有内置的方法可以做到这一点,我也不知道有第三方工具可以做到这一点。希望 Expression Web 3 能让事情变得更简单。
如果您有 CMS,最好让其完全控制页面内容。如果有 CMS 无法完成的事情,您可以考虑为 CMS 编写扩展或插件模块,然后您的设计人员可以将这些扩展或插件模块放到 CMS 页面编辑器中的页面上。
如果您的 CMS 不支持插件模块,您可能会尝试强制 CMS 和母版页执行它们不打算执行的操作。
如果上述方法在您的情况下不起作用,请考虑另一种想法:在您的母版页上放置内联框架,以托管在 CMS 中编辑的页面。
希望有帮助。
好吧,使用Web 应用程序项目页面在访问之前不会编译(链接是 2005,但它仍然适用)。这意味着实际的 .aspx(和 .ascx 等)页面以原始状态部署。设计人员可以更新服务器上页面的格式,并且下次有人请求该内容时将编译更新。
允许设计人员通过您网站的 UI 下载当前页面并上传替换页面相对简单。但是,它不是很安全(可能永远不应该这样做)。最好允许设计人员通过 Web 访问虚拟目录,以便他们可以使用Expression Web等工具连接到该目录。通过这种方式,设计师可以打开当前网站,编辑页面,并将结果直接推送到生产中(尽管这种想法可能很可怕)。
当我因为正确答案而被否决时,让我指出一些事情。
网站项目按需编译代码隐藏和页面。如果您需要定期更新代码,这是一个不错的解决方案。
Web 应用程序项目可以配置为可更新。所有代码隐藏和类都编译成一个程序集,所有 aspx、ascx 等页面都按需部署和编译。这意味着设计师可以连接到网站,更新布局和静态内容,并在下一个请求时查看更改。
这是我首选的部署方法。我在野外有一些 Web 应用程序项目,在我的 dll 旁边部署了可更新的 aspx 文件。这个想法是网站的用户可以更改 UI 而无需向我提交更新,这样我就可以为他们重新编译它。
有趣的问题,
前段时间我一直在涉足该领域。
当这些网页设计师不在非内部 Photoshop 或 Flash 领域时,他们的知识水平如何?
如果使用 DIY-CMS,也许您可以对最易受影响的对象进行模板化,例如制作一个通用的(如您所想的,而不是他们所想的 ;-))列表和进入设计的方式(如果适用)。
只要你有一个完整的框架设置,通过 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 的方式。
.master 只是一个文本文件。他们可以随意编辑它。他们肯定不会对它做任何事情,需要您重新编译代码才能查看它。这首先是 Master Pages 的一大优势:设计师和其他非程序员可以手动编辑它们而不会破坏任何东西。
让他们访问源代码控制下的文件,让他们发疯。