ASP.NET MVC Бритва: троичная - PullRequest
       3

ASP.NET MVC Бритва: троичная

2 голосов
/ 11 октября 2011

Возникла небольшая проблема с вычислением с помощью троицы с движком Razor.

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

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

ОБНОВЛЕНИЕ: Извините, вопрос немного изменился.

Ответы [ 3 ]

11 голосов
/ 11 октября 2011

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

@(string.IsNullOrEmpty(Model.Prop) ? "null" : "'" + Model.Prop + "'")
7 голосов
/ 11 октября 2011

Предположим, у вас есть объект с именем 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")]
4 голосов
/ 11 октября 2011

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

Вот для чего предназначены модели представлений:

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

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

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