Если значение равно нулю, поместите пустую строку в шаблон бритвы? - PullRequest
27 голосов
/ 17 августа 2011

У меня есть шаблон бритвы, как показано ниже.Я хочу проверить, является ли значение в поле ввода пустым, поставить пустую строку, если @UIManager.Member.EMail имеет значение, поставить его значение.Как я могу это сделать?

Обычный ввод:

<input name="EMail" id="SignUpEMail" type="text" class="Input" 
       value="@UIManager.Member.EMail" validate="RequiredField" />

Синтаксис Razor Попытка:

<input name="EMail" id="SignUpEMail" type="text" class="Input" validate="RequiredField"
       value="@(UIManager.Member == null) ? string.Empty : UIManager.Member.EMail" />

Значение отображается в поле ввода:

True ? string.Empty : UIBusinessManager.MemberCandidate.EMail

Ответы [ 4 ]

55 голосов
/ 17 августа 2011

Если звучит так, как вы хотите:

@(UIManager.Member == null ? "" : UIManager.Member.Email)

Обратите внимание, что расположение скобок имеет решающее значение; с бритвой @(....) определяет явный диапазон кода - следовательно, все, что за пределами , скобки обрабатываются как разметка (не код).

20 голосов
/ 27 сентября 2016

Это именно то, для чего используется свойство NullDisplayText атрибута [DisplayFormat] .

Добавьте это прямо к вашей модели:

[DisplayFormat(NullDisplayText="", ApplyFormatInEditMode=true)]
public string EMail { get; set; }
17 голосов
/ 08 мая 2014

Проверить некоторые свойства модели в cshtml.

@if(!string.IsNullOrEmpty(Model.CUSTOM_PROPERTY))
{
    <p>@Model.CUSTOM_PROPERTY</p>
}
else
{
    <p> - </p>
}

так что лучший способ сделать это:

@(Model.CUSTOM_PROPERTY ?? "-")
1 голос
/ 08 апреля 2017

Используйте условный оператор null :

@UIManager.Member?.Email
...