Asp.net 剃刀串操作

Asp.net 剃刀串操作,asp.net,razor,Asp.net,Razor,我有一根剃须刀线 @postername.Substring(0, @postername.IndexOf("@")) 如果用户名有电子邮件,我会在@sign之前得到用户名,但是如果用户名没有电子邮件,我想得到整个单词,怎么办 if(@postername.Contains("@")){ @postername.Substring(0, @postername.IndexOf("@")) }else{ @poster

我有一根剃须刀线

 @postername.Substring(0, @postername.IndexOf("@"))
如果用户名有电子邮件,我会在@sign之前得到用户名,但是如果用户名没有电子邮件,我想得到整个单词,怎么办

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

但不起作用,请帮助

如果必须在视图级别执行此操作,请先将逻辑构建到变量中:

@{

 string posternameShort = postername;

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

}
然后调用新变量:

@posternameShort

为了进一步阐明这一点,Razor函数(出现在
{
}
之间的代码块中)。此外,还有

这是强大的。在C#或Visual Basic中发生的任何字符串操作也可以在Razor代码中使用

更多关于此的信息,请访问


概述了执行此操作的基本方法,但我认为最好解释“如何”后面的“为什么”,特别是因为我自己一直在研究如何使用Razor操作字符串。

我们可以在您的视图中看到围绕这行代码的代码吗?定义“不起作用”。是否有错误?什么是输入,什么是输出?另外,您真的需要代码中的所有
@
s吗?也许我弄错了,但我认为代码的开头应该是
@
(比如,在
if
之前),然后它就变成了一个代码块。并不是所有的变量都使用它。老实说,这并不是你应该强行进入你的视图的逻辑。在发送之前,我会在您的ViewModel或controller中执行此操作。错误是“/”应用程序中的服务器错误。长度不能小于零。参数名称:长度