いくつかのデータがありますが、そのデータが空白の場合があります。ビューに大量のクレイジーなロジックを作成する代わりに、データが存在する場合はそれをレンダリングするヘルパー メソッドを使用し、文字列が空/null の場合は「N/A」とだけ表示される HTML をレンダリングします。
理想的な構文:@Helpers.RenderThisOrThat(Model.CustomerPhone)
(文字列) が空の場合、Model.CustomerPhone
代わりにこの代替 HTML がレンダリングされます。<span class='muted'>N/A</span>
これまでの内容は次のとおりです。
@helper RenderThisOrThat(string stringToRender, string methodToGetAlternateText = null)
{
@RenderThisOrThat(MvcHtmlString.Create(stringToRender), methodToGetAlternateText)
}
@helper RenderThisOrThat(MvcHtmlString stringToRender, string methodToGetAlternateText = null)
{
if (string.IsNullOrWhiteSpace(stringToRender.ToHtmlString()))
{
if (!string.IsNullOrWhiteSpace(methodToGetAlternateText)) {
@methodToGetAlternateText
}
<span class='muted'>N/A</span>
}
@stringToRender
}
これは、いずれかのパラメーターに文字列以外のものを渡す必要があるまでは問題なく機能します。たとえば、電子メール アドレスがある場合、電子メールの文字列だけでなく、その電子メールへのリンクである必要があります。
@Helpers.RenderThisOrThat(@<a href="mailto:@Html.DisplayFor(m => m.CustomerEmail)">@Html.DisplayFor(m => m.CustomerEmail)</a>)
「デリゲート型ではないため、ラムダ式を '文字列' 型に変換できません」というエラーが表示されます。
これを機能させる方法について途方に暮れています...ここで何か助けはありますか?