通貨を表示するためにRazorで表示テンプレートを作成しました。これをコードから削除し、文字列形式( "C"に設定可能)を受け入れる標準のテキスト表示テンプレートに置き換えます。
ただし、発生することが多いので、[Obsolete]属性のようなものを警告メッセージとともに使用して、すべてのコードを壊すことなく、今後数週間にわたってこれを実行できるようにしたいと思います。
これは可能ですか、それとも同等の方法がありますか?
乾杯、
アダム。
通貨を表示するためにRazorで表示テンプレートを作成しました。これをコードから削除し、文字列形式( "C"に設定可能)を受け入れる標準のテキスト表示テンプレートに置き換えます。
ただし、発生することが多いので、[Obsolete]属性のようなものを警告メッセージとともに使用して、すべてのコードを壊すことなく、今後数週間にわたってこれを実行できるようにしたいと思います。
これは可能ですか、それとも同等の方法がありますか?
乾杯、
アダム。
一見そうではない:(
DisplayTemplatesは汎用です。例:
@Html.DisplayFor(model => model.Foo)
を使用する[Obsolete]
には、それらすべてに適用されるDisplayForメソッドをマークする必要があります。私は「より具体的な」バージョンを作成して、それがそれを取得するかどうかを確認しようとしました(次に、次[Obsolete]
のように、それをとしてマークできるためです。
public static class MyExtensions
{
[Obsolete]
public static MvcHtmlString DisplayFor<TModel, DateTime>(this HtmlHelper<TModel> html, Expression<Func<TModel, DateTime>> expression)
{
return html.DisplayFor(expression);
}
}
残念ながら、これは機能しませんでした。次のエラーが発生します。
コンパイラエラーメッセージ:CS0121:呼び出しは次のメソッドまたはプロパティ間であいまいです:'MvcApplication11.Models.MyExtensions.DisplayFor(System.Web.Mvc.HtmlHelper、System.Linq.Expressions.Expression>)'と'System.Web。 Mvc.Html.DisplayExtensions.DisplayFor(System.Web.Mvc.HtmlHelper、System.Linq.Expressions.Expression>) '
ですから、で必要なことを達成できるとは思いません[Obsolete]
。IDEでDisplayForの呼び出しを実際に選択できない場合は、テンプレート内のスタックトレースをログに記録して(テンプレート内で任意のC#を実行できるため)、アプリを実行してみてください。これは防弾ではありませんが、少し役立つかもしれません。