0

次のマクロがあります。

<macro name="InputField" id="string" value="string">
...
      <input type="text" id="${id}" name="${id}" value="${value}  />
...
</macro>

そして、マクロへの呼び出し:

${InputField( "model.address.address1", 75, "Address", model.Address.Address1 )}

唯一の問題は、一部の状況 (編集ではなくアイテムの作成) で model.Address が null になることです。このため、マクロは実行されないか失敗し、マクロ呼び出しをビューに出力するだけです。

Address が null かどうかに応じて、"" または model.Address.Address1 の値を渡すにはどうすればよいですか? null 演算子 ($!{}) は、このインスタンスでは機能しないようです。

4

1 に答える 1

2

解決策1.書き込みメソッド

public static string HandleNull(Func<object> func)
{
   try { return func().ToString(); } 
   catch (NullReferenceException) { return ""; }
}

Sparkマクロの代わりに使用します。

${InputField( "model.address.address1", 75, "Address", HandleNull(() => model.Address.Address1) )}

解決策2.http://www.jmill.net/taxonomy/term/312を使用します

解決策3。

<macro name="InputField" id="string" value="Func<string>">
...
      <input type="text" id="${id}" name="${id}" value="$!{value()}  />
...
</macro>

${InputField( "model.address.address1", 75, "Address", () => model.Address.Address1 )}

すべてのソリューションは、実行の延期に依存しています。

于 2009-12-03T20:40:10.060 に答える