我在MVC視圖中擁有這段代碼,但它會像很多代碼一樣接縫來實現這個簡單的事情。任何方式使它更有效率?檢查Viewbag屬性是否爲空,並在視圖中使用默認值
@if (string.IsNullOrEmpty(ViewBag.Name))
{
@:
}
else
{
@:ViewBag.Name
}
我在MVC視圖中擁有這段代碼,但它會像很多代碼一樣接縫來實現這個簡單的事情。任何方式使它更有效率?檢查Viewbag屬性是否爲空,並在視圖中使用默認值
@if (string.IsNullOrEmpty(ViewBag.Name))
{
@:
}
else
{
@:ViewBag.Name
}
@(ViewBag.Name ?? Html.Raw(" "))
任何方式使其更有效率?
對沒錯,使用視圖模型和擺脫ViewBag
的:
public string FormattedName
{
get { return string.IsNullOrEmpty(this.Name) ? " " : this.Name; }
}
,然後在你的強類型的視圖:
@Html.DisplayFor(x => x.FormattedName)
或者如果你喜歡:
@Model.FormattedName
另一種可能性是編寫自定義幫助ER:
public static class HtmlExtensions
{
public static IHtmlString Format(this HtmlHelper html, string data)
{
if (string.IsNullOrEmpty(data))
{
return new HtmlString(" ");
}
return html.Encode(name);
}
}
,然後在您的視圖:
@Html.Format(Model.Name)
,或者如果你需要保持ViewCrap你將不得不忍受鑄造(對不起,.NET不支持擴展方法調度動態參數):
@Html.Format((string)ViewBag.Name)
我認爲'動態'一般被濫用。 – 2012-07-19 14:53:23
我要提醒我的回答對一件事。如果ViewBag.Name是「」,那麼你得到的輸出爲「」而不是 。這是因爲??運算符僅適用於空字符串而不是空字符串。 – VJAI 2012-07-20 12:20:02