ASP.NET MVC Razor:三元

时间:2011-10-11 16:00:18

标签: asp.net view razor

在使用带有Razor视图引擎的三元组时遇到一些麻烦。

我的模型有一个字符串属性。如果该字符串属性为null,我想在视图中呈现null。如果属性不为null,我希望它使用前导'呈现属性值。

我该怎么做?

更新:抱歉,稍微改了一下问题。

3 个答案:

答案 0 :(得分:11)

您应该只能使用标题建议的三元运算符:

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

答案 1 :(得分:7)

假设您有一个名为Test且具有FirstLast属性的实体:

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")]

答案 2 :(得分:4)

三元,循环,C#和东西让视图变得难看。

这就是视图模型的精确设计:

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

然后在你的强类型视图中:

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