MVC の Display および EditorTemplates に関するこの投稿を見つけました。
http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html
通貨記号で書式設定された 10 進数を簡単に表示するための表示テンプレートを作成します。
例で使用されるモデル:
public class TestModel
{
public decimal Money { get; set; }
}
表示テンプレート:
ビュー/共有/DisplayTemplates/decimal.cshtml:
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
私のウェブサイトには、10 進数から書式設定された通貨文字列を取得するメソッドを持つヘルパー クラスがあるため、上記を次のように置き換えます。
@model decimal
@(MyHelperClass.GetCurrencyString(Model))
最後に、書式設定された通貨を表示するビュー:
@model TestModel
@Html.DisplayFor(e => e.Money)
出力:
<span class="currency">$3.50</span>
これで問題なく実装できます。しかし、もちろん、フォーマットされた通貨を表示したい別のビューがあります。しかし、通貨記号を表示したくない場合もあります。
私の質問は、コードでやり過ぎずにこの小さなバリエーションを実装する方法です。
これが私の現在の実装です:
表示テンプレートを次のように変更しました。
@model decimal
@{
bool woCurrency = (bool)ViewData["woCurrency"];
}
@(MyHelperClass.GetCurrencyString(Model)Model,woCurrency))
もちろん、この追加の属性を受け入れるように GetCurrencyString メソッドにも変更しました。
私の見解では、この属性も提供する必要があります。
@Html.DisplayFor(m => m.Money, new { woCurrency = true })
実際、私はすべてが機能するように機能します。しかし、どういうわけか、ビューをより複雑にするこのソリューションが好きではありません。
あなたへの私の質問: このようなものを実装する他の方法はありますか? または、現在のソリューションを最適化するためのアドバイスはありますか?
ありがとう!