我有一些数据,有时这些数据是空白的。与其在我的视图上制作一堆疯狂的逻辑,我宁愿使用一个辅助方法来呈现数据(如果存在),并在字符串为空/空时呈现一些只显示“N/A”的 HTML。
理想语法:@Helpers.RenderThisOrThat(Model.CustomerPhone)
如果Model.CustomerPhone
(a string) 为空,它将呈现此替代 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>)
它给了我们错误:“无法将 lambda 表达式转换为类型‘字符串’,因为它不是委托类型”
我们不知道如何进行这项工作......这里有什么帮助吗?