RazorEngine は、ASP.NET MVC4 アプリケーションで C# Razor ビューを実行するために使用されます。
ビューには、次のようなカスタム Format 関数呼び出しにラップされた 10 進数式が含まれています
<div>@Format(somedecimalexpression/someotherdecimalexpression)</div>
これにより例外が発生します
Attempted to divide by zero
someotherdecimalexpression 値が 0 の場合
かみそりエンジンにゼロ除算例外を無視させるにはどうすればよいですか? これが発生した場合、空の文字列に対して大きな 10 進数または null を返すことができます。
式は、実行時にエンド ユーザーによって作成されます。データベース フィールドには decimal 型があり、すべてのオペランドを double に変換してこの例外を取り除くことは困難です。
プロジェクトのプロパティで人工的なオーバーフローのチェックがオフになっていますが、これは役に立ちません。私は試した
<div>@Eval("somedecimalexpression/0")</div>
およびテンプレート基本クラスで
public string Eval(string expression) {
try {
return Format(Run(expression));
}
catch (DivideByZeroException) {
return ""
}
}
Runメソッドがないのでコンパイルエラー。