ViewCargo
C# で動的に逆シリアル化するデータベースの JSON blob 内に html を保存しています。ビュー レベルでは、次のようなものを使用@Model.ViewCargo.PromoDetails
して HTML を出力します。
動的プロパティ内のコンテンツを更新する必要があるシナリオを除いて、これはうまく機能しています。その例として、次のような、ページを読み込んでいるユーザーに基づいて href 属性を設定する必要があるアンカー タグを含む段落タグ内のメッセージがあります。
<p>Thank you for coming back to our promotion! It looks like you have already
received a promotional card for this promotion! You can click
<a href="[need to inject URL here]" target="blank">here</a> to retrieve
your promotional gift card!</p>
この場合、URL は、ユーザーとプロモーションを検索し、ユーザーが既にこのプロモーションに参加していると判断するデータベースへの呼び出しから取得されます。そのため、(新しいカードを発行する代わりに)既存のカードを取得するためのリンクを提供したいと思います。
私が検討したことの 1 つは、json 化された HTML にプレースホルダーを配置し、String.Replace を使用することです。例えば:
string existingUrl = db.UserAlreadySubmitted(userId,promoId);
if(!string.IsNullOrEmpty(existingUrl)) {
Campaign.ViewCargo.PromoDetails = Campaign.ViewCargo.PromoDetails.Replace("[URLPlaceholder]",existingUrl);
}
return View(Campaign);
私は多数のビューのビューの読み込みを処理する中央コントローラーを持っているので、このようなコードでコントローラー メソッドが詰まるのを避けたいと思います。他にできることはありますか?