2011-08-17 31 views
24

我有一個像下面這樣的剃刀模板。我想檢查輸入字段中的值是否爲空,如果@UIManager.Member.EMail有值,則放置一個空字符串,將其值。我怎樣才能做到這一點?如果value爲null,請在剃刀模板上放置一個空字符串?

正常輸入:

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

剃刀語法嘗試:

<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 
+1

只要UIManager的和UIManager.Member非空,這應該已經工作...你能澄清? –

+0

其實@ UIManager.Member最初是空的。它在回發操作後獲得它的價值。所以它不工作,你是對的。如何檢查它? –

回答

45

如果喜歡你的聲音只是想:

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

注意括號的位置非常重要;用剃刀,@(....)定義顯式範圍內的代碼 - 因此任何以外括號被視爲標記(而不是代碼)。

+0

謝謝。這是我需要的。 –

14

檢查cshtml模型的某些屬性。要做到這一點

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

所以最好的辦法:

@(Model.CUSTOM_PROPERTY ?? "-") 
+0

很高興我們現在可以做到這一點,就像在JS中一樣。 – gdbj

12

這也正是NullDisplayText財產上[DisplayFormat] attribute是。

直接在模型中加入這樣的:

[DisplayFormat(NullDisplayText="", ApplyFormatInEditMode=true)] 
public string EMail { get; set; } 
+1

我相信這是最好的答案如果考慮一種方法。更清潔,更容易實施。 –