【问题标题】:How do I provide easy editing of ASP .NET master pages for designers?如何为设计人员提供对 ASP .NET 母版页的轻松编辑?
【发布时间】:2009-03-04 15:49:06
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: asp.net content-management-system master-pages


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      最重要的是,您需要规范设计师将如何向您提交他们的作品。如果你有它,并且你可以依靠 html 和 css,那么你可以考虑围绕它构建一个 CMS。在 RAD 的今天,我发现只使用交付给我的 html 和 css 并根据需要将这些片段复制并粘贴到我的母版页和其他页面中更容易。

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

          如果您有 CMS,最好让其完全控制页面内容。如果 CMS 无法完成某些事情,您可以考虑为 CMS 编写扩展程序或插件模块,然后您的设计人员可以将它们放到 CMS 页面编辑器中的页面上。

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

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

          希望对您有所帮助。

          【讨论】:

            【解决方案5】:

            您是否可以在母版页中放置占位符来代替应允许设计师编辑的区域?由于母版页只能在 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 将渲染&lt;div&gt; 标签,这会搞砸。也许您可以扩展 PlaceHolder 并覆盖它呈现 HTML 的方式。

            【讨论】:

            • 我已经实现了一个稍微类似的解决方案。我确实使用了 ContentPlaceHolder 而不是 asp:PlaceHolder。
            【解决方案6】:

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

            这些网页设计师在非 Photoshop 或 Flash 领域之外的知识水平如何?

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

            只要您设置了一个完整的框架,通过 CMS 处理设计人员可用的属性,就不需要重新编译......但当然,我可以很容易地看到一个开发人员(阅读:我)绊倒 进入细节完美的差距......

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

            你能提供一些例子吗?

            【讨论】:

              【解决方案7】:

              好吧,Web Application Project 页面在被访问之前不会被编译(链接是 2005,但它仍然适用)。这意味着实际的 .aspx(和 .ascx 等)页面以原始状态部署。设计者可以在服务器上更新页面的格式,并且下次有人请求该内容时会编译更新。

              允许设计人员通过您网站的 UI 下载当前页面并上传替换页面相对简单。但是,它不是很安全(可能永远不应该这样做)。最好允许设计人员通过 Web 访问虚拟目录,以便他们可以使用诸如 Expression Web 之类的工具连接到它。通过这种方式,设计人员可以打开当前网站、编辑页面并将结果直接推送到生产中(虽然这种想法可能很可怕)。


              由于我的回答正确而被否决,让我指出一些事情。

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

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

              这是我首选的部署方法。我在野外有一些 Web 应用程序项目,在我的 dll 旁边部署了可更新的 aspx 文件。这个想法是网站的用户可以更改 UI 而无需向我提交更新,这样我就可以为他们重新编译它。

              【讨论】:

              • 这是一个网站项目,而不是按需编译的 Web 应用程序项目
              • "这意味着实际的.aspx(和.ascx等)页面以原始状态部署。设计人员可以在服务器上更新页面的格式,更新将在下一个编译有人要求该内容的时间”阅读理解多吗?
              • 混淆的名字是什么?如果我遗漏了什么,我会补上。
              • 实际上IIRC网站和Web App项目都是动态编译的,只是网站是逐页编译的?
              • WAP 根据请求编译页面。网站根据第一次请求编译代码和页面。我相信两者都会编译所有未在第一次请求时编译的内容。
              【解决方案8】:

              .master 只是一个文本文件。他们可以随意编辑它。他们肯定不会对它做任何事情,需要您重新编译代码才能查看它。这首先是 Master Pages 的一大优势:设计师和其他非程序员可以手动编辑它们而不会破坏任何东西。

              让他们访问受源代码控制的文件,让他们发疯。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2023-04-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2018-02-05
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多