2012-12-17 125 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自己操纵字符串。