我有一些數據,有時候這些數據是空白的。我寧願使用一種幫助器方法,而不是在視圖上製作一堆瘋狂的邏輯,如果它存在,它將呈現數據,並呈現一些HTML,當字符串爲空/空時,它只表示「N/A」。MVC Razor:助手方法在空時渲染備用內容
理想語法:@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>)
它給我們的錯誤:「無法轉換lambda表達式到類型‘串’,因爲它不是一個委託類型」
我們是在爲如何使這項工作的損失..這裏有什麼幫助嗎?
你能寫這樣的代碼嗎?除了你的幫助方法,我不認爲剃刀可以解釋這個 – 2013-03-01 15:07:17
你是否引用'System.Linq;'? – Kami 2013-03-01 15:08:42
@Kami什麼是LINQ的? – 2013-03-01 15:09:25