nullモデルが渡された場合でも機能するように、カスタムエディターテンプレートを設計したいと思います。つまり、がnullの@Html.EditorForModel()
場合。Model
私が抱えている問題は、EditorTemplateを使用しているときに、モデルのプロパティの1つにアクセスする必要がある場合があり、かなり古い記述になることです。@if(Model != null && Model.[Property] ...)
例えば
@model MyObject
@if(Model.BoolProperty) // throws NullReferenceException
{
<div>...additional stuff here</div>
}
@Html.EditorFor(m => m.OtherProperty)
次のような拡張メソッドを追加することを検討しました
public static R GetValue<T, R>(this WebViewPage<T> viewPage, Func<T, R> selector)
{
if (selector == null) throw new ArgumentNullException("selector");
if (viewPage == null) throw new ArgumentNullException("viewPage");
if (viewPage.Model == null) return default(R);
return selector(viewPage.Model);
}
このようにEditorTemplateでそれを使用します
@model MyObject
@if(this.GetValue(m => m.BoolProperty)) // Safely gets value or false
{
<div>...additional stuff here</div>
}
@Html.EditorFor(m => m.OtherProperty)
しかし、モデルが存在する場合に、をスローせずにこれらのプロパティにアクセスしようとする組み込みの方法または「適切な」方法があるかどうかを知りたいですNullReferenceException
。