0

Razorで次のようなことを行うことは可能ですか?

@using(Html.CMSContent("TermsOfService")) 
{
    <text>
        <!-- Some default content goes here if the "TermsOfService"
             item doesn't exist in my content table in the database -->
    </text>
}

ビューが処理されているときに、CMSContentヘルパーが、設定したデータベーステーブルで「TermsOfService」という名前のコンテンツアイテムを見つけられない場合、デフォルトのコンテンツを出力します。

それ以外の場合は、デフォルトのコンテンツがデータベースの内容に置き換えられますか?

マーケティング部門が必要に応じてアプリのテキストを上書きできるように、CMS/アプリケーションハイブリッドを構築しようとしています。

明らかにする

私がこれを行う理由は、コードの読み取りと書き込みを非常に簡単にするためです。私はあちこちでこれらの小さなコンテンツブロックになってしまうので、この機能を取得するために開発者が入力しなければならない量を最小限に抑えたいと思っています。

また、99%の確率で、デフォルトのテキストが表示されることを期待しています。ただし、アプリを再デプロイせずにテキストをすばやく変更する必要がある1%のケースを処理してもらいたいと思います。したがって、デフォルトのテキストをコンテキストにできるだけ近づけることが重要です(つまり、開発者がデフォルトのテキストを確認するために別のファイルにジャンプしたり、先頭にジャンプしたりする必要はありません。ページ)。

たとえば、これを行う@using(Html.BeginForm())と、開始タグと終了タグが自動的に発行され<form>ます。私はそのような賢い何かを望んでいます。

4

2 に答える 2

2

Html.CMSContent( "..")は何を返しますか?このヘルパーの戻り値を変数に格納してから、呼び出しがデータベース値を返したかどうかを確認できますか?そうである場合は、コンテンツを表示し、そうでない場合はデフォルトのテキストを表示しますか?ヘルパーが返すものを指定しなかったため、あなたのケースで100%動作するかどうかわからない、私が説明する簡単なコードを次に示します。

 @{
      var terms = Html.CMSContent("TermsOfService");
 }

 @if (terms != null && terms != "") {
      @terms
 } else {
      @: Default Terms of Service
 }
于 2012-10-19T17:52:59.683 に答える
0

私は自分が探していたものを理解したと思います。ifの代わりに使用しますusing

if(!Html.CMSContent("TermsOfService"))
{
     <text>
           Default content goes here
     </text>
}

ヘルパーの場合:

public static bool CMSContent(this HtmlHelper Html, string BlockName)
{
     if (blockname in database)
     {
         var blockdata = (retrieve from database);
         Html.ViewContext.HttpContext.Response.Write(blockdata);
         return true;
     }
     else
     {
         return false;
     }

}

Response.Writeを使用することが最善の方法かどうかはわかりませんが。

于 2012-10-19T22:08:00.020 に答える