如果value为null,则在razor模板上放一个空字符串?

Bar*_*ğlu 29 asp.net-mvc razor

我有一个像下面这样的剃须刀模板.我想检查输入字段中的值是否为null,放入一个空字符串,如果@UIManager.Member.EMail有一个值,则将其值放入.我怎样才能做到这一点?

正常输入:

<input name="EMail" id="SignUpEMail" type="text" class="Input" 
       value="@UIManager.Member.EMail" validate="RequiredField" />
Run Code Online (Sandbox Code Playgroud)

剃刀语法尝试:

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

输入字段中显示的值为:

True ? string.Empty : UIBusinessManager.MemberCandidate.EMail
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 59

如果听起来像你只是想:

@(UIManager.Member == null ? "" : UIManager.Member.Email)
Run Code Online (Sandbox Code Playgroud)

注意括号的位置是至关重要的; 使用razor,@(....)定义代码的显式范围 - 因此括号的任何内容都被视为标记(而不是代码).


Kyl*_*Mit 20

这正是NullDisplayText属性[DisplayFormat]属性的用途.

直接在您的模型上添加:

[DisplayFormat(NullDisplayText="", ApplyFormatInEditMode=true)]
public string EMail { get; set; }
Run Code Online (Sandbox Code Playgroud)


Gha*_*zni 18

在cshtml中检查模型的某些属性.

@if(!string.IsNullOrEmpty(Model.CUSTOM_PROPERTY))
{
    <p>@Model.CUSTOM_PROPERTY</p>
}
else
{
    <p> - </p>
}
Run Code Online (Sandbox Code Playgroud)

所以最好的方法是这样做:

@(Model.CUSTOM_PROPERTY ?? "-")
Run Code Online (Sandbox Code Playgroud)