2012-12-17 126 views
1

我有一個剃鬚刀串剃刀字符串操作

@postername.Substring(0, @postername.IndexOf("@")) 

如果用戶名有電子郵件,我得到的用戶名@符號之前,但如果用戶名沒有電子郵件,我想有一個完整的單詞,怎麼辦?

if(@postername.Contains("@")){ 
      @postername.Substring(0, @postername.IndexOf("@")) 
      }else{ 
      @postername 
      } 

,但沒有工作,請幫助

+0

我們可以看到圍繞該代碼行的視圖中的代碼? – IronMan84

+0

定義「沒有工作」。有錯誤嗎?什麼是輸入和輸出是什麼?另外,你是否真的需要代碼中的所有'@'?也許我錯了,但我認爲你用'@'開始代碼(就像在'if'之前一樣),然後使它成爲一個代碼塊。你不要把它用於所有的變量。 – David

+0

說實話,這實際上不是邏輯,你應該推into你的觀點。在發送它之前,我會在ViewModel或控制器中執行此操作。 – Josh

回答

7

如果你必須這樣做,在查看水平,建立邏輯到一個變量第一:

@{ 

string posternameShort = postername; 

if(postername.Contains("@")){ 
    posternameShort = postername.Substring(0, postername.IndexOf("@")) 
} 

} 

然後調用新的變量:

@posternameShort 
0

爲了進一步闡明這一點,剃刀功能(出現在{之間的代碼塊和}fully support C# code。此外,Visual Basic code is supported也是如此。

這很強大。在C#或Visual Basic中可能出現的任何字符串操作也可用於Razor代碼。

更多有關此信息herehere

Curt's response概述了一個基本的方法來做到這一點,但我認爲這將是很好的解釋「如何」背後的「爲什麼」,尤其是因爲我一直在研究如何使用Razor自己操縱字符串。