2011-10-11 169 views
2

在使用帶有Razor視圖引擎的三元組時遇到了一點麻煩。ASP.NET MVC剃刀:三元

我的模型有一個字符串屬性。如果該字符串屬性爲空,我想在視圖中渲染null。如果該屬性不爲空,我希望它使用前導和尾隨'來呈現屬性值。

我該怎麼做?

更新:對不起,稍微改變了問題。

+0

您可以使用空合併opererator?像這樣的:@ Model.MyString ?? 「'null'」 –

+0

我同意@Darin Dimitrov。 *三元,循環,C#和東西使視圖很難看。* –

回答

11

你應該只能夠使用三元運算符之類的標題提示:

@(string.IsNullOrEmpty(Model.Prop) ? "null" : "'" + Model.Prop + "'") 
+3

完美!我使用'{}'而不是'()'! –

7

假設你有一個名爲TestFirstLast性質的實體:

public class Test { 

    public string First { get; set; } 

    public string Last { get; set; } 
} 

您可以使用DisplayFormat.DataFormatStringDisplayFormat.NullDisplayText以達到您的目的:

public class Test { 

    [Display(Name = "First Name")] 
    [DisplayFormat(DataFormatString = "'{0}'", NullDisplayText = "'null'")] 
    public string First { get; set; } 

    [Display(Name = "Last Name")] 
    [DisplayFormat(DataFormatString = "'{0}'", NullDisplayText = "'null'")] 
    public string Last { get; set; } 
} 

,並考慮:

@Html.DisplayFor(model => model.First) 

@Html.DisplayFor(model => model.Last) 

我改變了答案過於:

[DisplayFormat(DataFormatString = "'{0}'", NullDisplayText = "null")] 
4

三元,循環,C#之類的東西,使意見難看。

這就是查看車型特別設計來做到:

public class MyViewModel 
{ 
    [DisplayFormat(NullDisplayText = "null", DataFormatString = "'{0}'"] 
    public string MyProperty { get; set; } 
} 

,然後在你的強類型的觀點只是:

@model MyViewModel 
... 
@Html.DisplayFor(x => x.MyProperty) 
+0

你是對的。我同意你 –