0

ページのレンダリングをAjaxに大きく依存しているC#.Netアプリケーションがあります。ユーザーがページを上下にスクロールすると、新しいコンテンツが読み込まれます。生データをJSON経由でJavascriptに配信し、JSがそれを介してHTMLマークアップを作成し、ページに書き込みます。

同時に、.Netを使用して最初のページのコンテンツを配信し、検索エンジンと非JSブラウザーが何かを消化できるようにする必要があります。同じ生データを使用してマークアップをリテラルコントロールにレンダリングするC#。

問題は、C#とJavaScriptの両方で同じフォーマットルールをコーディングしていることに気付くということです。これは不要のようです。

簡単な例:

これはC#で...

for (int x=0; x < lines.Length; x++)
{
    html.Append("<div>");
    html.Append(lines[x].Title);
    html.Append("</div>");
}

... JavaScriptではこれと一致します:

for (int x=0; x < lines.length; x++)
{
    html += "<div>";
    html += lines[x].Title ;
    html += "</div>";
}

フォーマット/レイアウトを変更するには、両方を変更する必要があります。

したがって、私の提案する解決策は、XSLTを使用することです。
.Netを使用して新しいコンテンツのXMLファイルをオンザフライで生成すると、JSと.Netの両方が同じXSLTファイルを使用してXHTMLに変換し、マークアップを出力することができます。

私が見ることができる唯一の欠点は、.NetがXMLを生成して、それをマークアップに変換することだけであるということです。これは冗長に思えますが、フロントエンドマークアップのごく一部のみが実際に.Netによって生成されるため、ページの読み込み遅延は最小限に抑える必要があります。

これについて何か考えはありますか?代替案はありますか?

4

1 に答える 1

0

C#を使用してサーバー側で生成されたHTMLとJavaScriptを使用してクライアント側が同じである場合は、JavaScriptの生成を削除し、XLSTまたはコードを使用してサーバー上でHTMLを1回生成するだけです。JavaScriptは、AJAX呼び出しでこのHTMLを取得して直接表示し、必要に応じてイベントハンドラーをアタッチできます。

于 2012-04-19T20:01:06.860 に答える