デザイナーにASP .NETマスターページを簡単に編集するにはどうすればよいですか?
-
03-07-2019 - |
質問
シナリオ: すべてのページにかなり標準的なマスターページがあります。通常のログインフォームと、各ページで抽出される他の動的リストが含まれます。 Webデザイナーは、各ページの中央コンテンツプレースホルダーを既に変更できます。しかし、それでも、マスターページのデザインとレイアウトは私のプロジェクトに残っており、デザインの変更はVisual Studioで行い、プロジェクトを再コンパイルおよび再デプロイする必要があります。
CMSを使用してマスターページを設計するためのほぼ完全なアクセスを提供する最良の方法は何ですか?特定できる問題のいくつかは、動的リストまたはログインフォームなどの特定のコントロールを含めることです。
ありがとう。
解決
デザイナーが編集できる領域の代わりに、マスターページにプレースホルダーを配置することは可能でしょうか?マスターページはVisual Studioでのみ編集できるため、この時点で唯一の実行可能なオプションです。このアプローチの問題の1つは、あるプレースホルダーでタグを開いたままにし、別のプレースホルダーでタグを閉じる可能性があるため、プレースホルダーに入れたコンテンツが有効である可能性が低いことです。
<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>
それはsいことはわかっていますが、必要なコントロールを提供するかもしれません(XHTMLバリデーターが常に警告することを気にしない限り)。プレースホルダーに入れるのは、ユーザーコントロールやリテラルコンテンツなどです。ただし、動的に読み込む必要があります。
思考?
編集:これは機能しません。 PlaceHolderは、混乱を招く<div>
タグをレンダリングします。たぶん、PlaceHolderを拡張し、HTMLのレンダリング方法をオーバーライドできます。
他のヒント
ポータル内でコンテンツをホストする場合を除き、これに対する完璧な答えは知りません。
デザインするビットがページの見た目だけである場合、これはcssで制御でき、異なるcssファイルを使用してテーマを作成できるようになります。
これは確かに興味深い質問であり、完璧な解決策はありません。私はこの問題でeコマースショップで働いていました。率直に言って、多くの場合、デザイナーにhtmlとcssを提供するように頼みました。はい、これは退屈でした。...
次に、デザイナーがhtmlをhtmlエディターにコピーして貼り付けることができるcmsを構築し、これらのhtmlをデータベースに保存します。私のWebアプリは、実行時にデータベースからそれらを取得します。これにより、Webページのデザインを完全に制御できなかったため、すべてではありませんがいくつかの問題が解決します。
一番下の行は、デザイナーがあなたにどのようにあなたの仕事を提出するかに関して標準化する必要があるということです。それがあり、htmlとcssを頼りにできるなら、その周りにCMSを構築することを考え始めることができます。 RADのこの頃、私に届けられたhtmlとcssを使って作業し、必要に応じて作品を自分のマスターページや他のページに単にコピーアンドペーストする方が簡単だとわかりました。
これはCMSの答えではありませんが、DesignerがExpression Webでマスターページを開くことを許可する機能があります。私はそれが世界で最も優れたツールだとは言いませんが、デザイナーにExpressionのマスターページデザインを仕上げてもらい、良い結果を得ました。
ただし、問題があります。プロジェクト全体が開かれている場合、デザイナーはVisual Studioで見られるツリービュービューではなく、コードビハインドファイルを個別のアイテムとして表示します。
CMSを介してExpressionで使用するためにマスターページをチェックアウトすることができると思いますが、これを行うための組み込みの方法はなく、これを行うサードパーティツールも知りません。 Expression Web 3が物事を簡単にすることを願っています。
CMSを使用している場合は、ページコンテンツを完全に制御することをお勧めします。 CMSでできないことがある場合は、CMSの拡張機能またはプラグインモジュールを作成して、デザイナーがCMSのページエディターのページにドロップできるようにします。
CMSがプラグインモジュールをサポートしていない場合、CMSページとマスターページの両方に、意図していないことを強制的に実行しようとしている可能性があります。
上記の状況がうまくいかない場合は、別の考えがあります。マスターページにインラインフレームを配置して、CMSで編集されるページをホストします。
役立つこと。
興味深い質問、
少し前に自分でそのエリアに手を出していました。
これらのWebデザイナーは、PhotoshopまたはFlash以外の領域にいない場合、どの程度知識がありますか?
DIY-CMSを使用している場合、おそらく最も影響を受けやすいオブジェクトをテンプレート化できます。 g。必要に応じて、一般的なリストを作成し(好きなように感じるのではなく、好きなように;-))、デザインを入力する方法を作成します。
CMSを通じてデザイナーが利用できる属性を扱う完全なフレームワークが設定されている限り、再コンパイルの必要はないはずですが...もちろん、開発者を簡単に見ることができます(読んでください:私)つまずき 完璧な完璧さのギャップに....
最も簡単で管理しやすい方法は、デザイナーが自分のニーズをどのように表現するかを標準化することだと思います<!>
いくつかの例を提供してもらえますか?
さて、 Webアプリケーションプロジェクトページはアクセスされるまでコンパイルされません(リンクは2005ですが、それでも適用されます)。つまり、実際の.aspx(および.ascxなど)ページは元の状態で展開されます。デザイナーはサーバー上のページの形式を更新でき、その更新は次回誰かがそのコンテンツをリクエストしたときにコンパイルされます。
デザイナーが現在のページをダウンロードし、ウェブサイトのUIを介して置換ページをアップロードできるようにすることは比較的簡単です。ただし、これはあまり安全ではありません(おそらく実行すべきではありません)。デザイナーがWeb経由で仮想ディレクトリにアクセスできるようにして、 Expression Web 。このようにして、デザイナーは現在のWebサイトを開き、ページを編集し、結果を直接プロダクションにプッシュできます(考えられるかもしれませんが)。
正しい答えが得られたことに落胆しているので、何か指摘しておきましょう。
Webサイトプロジェクトは、コードビハインドとページをオンデマンドでコンパイルします。コードを定期的に更新する必要がある場合は、大丈夫なソリューションです。
Webアプリケーションプロジェクトは、更新可能に構成できます。すべての分離コードとクラスはアセンブリにコンパイルされ、すべてのaspx、ascxなどのページはオンデマンドで展開およびコンパイルされます。これは、デザイナーがWebサイトに接続し、レイアウトと静的コンテンツを更新し、次のリクエストで変更を確認できることを意味します。
これは、私の好ましい展開方法です。私は、更新可能なaspxファイルがdllと一緒にデプロイされた、いくつかのWebアプリケーションプロジェクトを世の中に出しています。 Webサイトのユーザーは、更新を送信することなくUIを変更できるので、ユーザーのために再コンパイルできます。
a .masterは単なるテキストファイルです。好きなように編集できます。確かに、表示するためだけにコードを再コンパイルする必要のある、彼らがそれに対して行うことはありません。そもそも、Master Pagesでの大きな勝利です。デザイナーや他のプログラマーではない人は、何も壊さずに手動で編集できます。
ソース管理下にあるファイルへのアクセスを許可し、気をつけてください。