2

わかりました、私はまだ Asp.Net と MVC3 に慣れていません。私は物事に慣れてきましたが、最初の Web アプリケーション (データベースへの単純な Web フォームの送信) を完了した後も実験を続けています。現在、電子メールを送信する古い ColdFusion Web フォームの変換など、小規模なプロジェクトに取り組んでいます。これは MVC3 で簡単に実現できましたが、Web ページはすべて、中央の HTML テンプレートが存在する別のコンテンツ管理システムにあります。私はすでにこれについてここで質問しましたが、どこにも行きませんでした。

私たちが持っているのは、Web ページの大部分が CMS から直接 HTML ファイルとしてエクスポートされ、データベースへのアクセスまたはプログラミング言語が必要なページだけが ColdFusion としてエクスポートされることです。CMS のテンプレート内で使用する ColdFusion コードを「含める」のは非常に簡単です。この HTML テンプレートを mvc3 プロジェクトで使用できるようにしたいと考えていますが、「インクルード」または外部ファイルへのリンクを実行する方法が見つかりませんでした。とにかくこれがどのように機能するかわからないので、テンプレートを mvc3 にコピーして貼り付け、このテンプレート (現在は「レイアウト」) をすべての小さなプロジェクト間で共有できる方法を考え出すことにしました。取りかかっている。テンプレートが変更された場合、小さな mvc3 Web アプリケーションをすべて更新する必要はありません。「エリア」の使い方を学びましたが、できるようです」

私が本当に必要としているのは、小さな mvc3 プロジェクトが 1 つのテンプレートを使用し、これらの小さな mvc3 プロジェクトが Web サーバー全体に分散される方法だけです。これは、複数の異なるフォルダーにパブリッシュする 1 つの大きなプロジェクトで行うのが最適ですか?それとも、共通のレイアウトを共有できる多くの小さなプロジェクトで行うのが最適ですか? これら2つのいずれかが可能ですか?

これらすべてを試みて実験した後、MVC は自分が望むものでは機能しないと考え始めています。イントラネット アプリケーションや Web サイト全体に適しているように思われますが、私が必要としているような「あちこち」の小さなアプリケーションではありません。代わりに Web フォームを学習する必要がありますか? ColdFusion と同じように、CMS 内に aspx ファイルを「含める」ことができることを知っています。

4

1 に答える 1

0

テンプレートをCMSから「エクスポート」する必要がありますか?または、静的CMS URLに「存続」するテンプレートを作成できますか?これは、dbアクセスを必要とする/ CMS内で簡単に実行できないが、同じルックアンドフィールを共有する必要があるアプリに対して行うことです。

できることは、プレーンな古いHTMLファイルをURL(https://cms.domain.tld/templates/designxyz.htmlなど)に公開することです。そのファイルは基本的なレイアウトを提供しますが、カスタムアプリのコンテンツがどこにあるかを除いて、「contentgoeshere」という文字列があります。

次に、MVCアプリから、このURLを呼び出して、HTMLコンテンツを文字列として取得できます。文字列を取得したら、「contentgoeshere」文字列の前後で2つに分割できます。次に、layout.cshtmlファイルで、次のような操作を実行できます。

@{
    const string contentPlaceholder = "content goes here";
    var allHtml = GetHtmlTemplateFromLiveServer();
    var index = allHtml.IndexOf(contentPlaceholder);
    var topHtml = allHtml.Substring(0, index);
    var botHtml = allHtml.Substring(index + contentPlaceHolder.Length);
}
@topHtml
@RenderBody()
@botHtml

このようなものが機能する場合は、これらすべてをHTMLヘルパーに抽象化してから、そのヘルパーを他のプロジェクトで再利用できます(NuGetはこれに適しています)。

_Layout.cshtml

@{
    var options = new CmsTemplateRenderOptions
    {
        Url = "https://cms.domain.tld/templates/designxyz.html",
        Cache = new TimeSpan(1, 0, 0);
    };
}
@Html.RenderCmsTemplate(CmsTemplateRenderRegion.Top, options)
@RenderBody()
@Html.RenderCmsTemplate(CmsTemplateRenderRegion.Bottom, options)

次に、すべてのアプリのレイアウトを更新するには、https://cms.domain.tld/templates/designxyz.htmlURLへの変更を公開するだけです。

于 2012-05-18T20:33:19.757 に答える