ASP.NET MVC Razor: тройной

Имея немного проблем, выясняя использование троичного двигателя с механизмом просмотра Razor.

Моя модель имеет свойство string. Если это свойство строки равно null, я хочу отобразить null в представлении. Если свойство не равно null, я хочу, чтобы оно отображало значение свойства с ведущим и конечным '.

Как я могу это сделать?

UPDATE: Извините, изменился вопрос немного.

Ответ 1

Вы должны просто использовать трехмерный оператор, например, название:

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

Ответ 2

Предположим, что у вас есть объект с именем Test с свойствами First и Last:

public class Test {

    public string First { get; set; }

    public string Last { get; set; }
}

Вы можете использовать DisplayFormat.DataFormatString и DisplayFormat.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")]

Ответ 3

Тернар, циклы, С# и прочее делают взгляды уродливыми.

То, что модели представления точно предназначены для выполнения:

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

а затем в вашем строго типизированном виде просто:

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