在Razor中定义长字符串

7

我想定义一个长字符串,并将其用作助手类中的参数。

我有以下代码,但它无法编译:

@{
var code ="
new TEL_Helper 
{ 
   URI = "abc@domain.com", 
   Type = TEL_TelecomType.Email, 
   Use = TEL_TelecomUse.VacationHome 
}"

Html.SyntaxXML(code)
}

如何定义跨越多行并包含换行符的字符串。

我使用的解决方案是:

@{
var code =@"
new TEL_Helper 
{ 
    URI = 'abc@domain.com', 
    Type = TEL_TelecomType.Email, 
    Use = TEL_TelecomUse.VacationHome 
}";

 Html.SyntaxXML(code);
 }
2个回答

12
你需要寻找标准的C#逐字字符串字面量。
            var code = @"
new TEL_Helper 
{ 
   URI = ""abc@domain.com"", 
   Type = TEL_TelecomType.Email, 
   Use = TEL_TelecomUse.VacationHome 
}"

我尝试过了,它仍然试图将字符串定义中的 "}" 与代码块中的开头 "{" 匹配。 - BENBUN Coder
@BENBUNCoder:那你肯定是哪里出错了;Razor确实支持这个。检查一下你的嵌套引号。 - SLaks
@BENBUNCoder 当你使用 @verbatim 语法时,字符串中的嵌套引号必须通过使用第二个引号进行转义,因此在 SLaks 的示例中,你需要像他展示的那样做 ""abc@domain.com""。 - Dismissile

0

将字符串拆分成多个部分并进行连接:

@{
    var code =
         "new TEL_Helper " +
         "{ " +
             "URI = \"abc@domain.com\"," +
         "}";
}

不要忘记在字符串中转义引号。


2
我猜这回答了问题,但它很麻烦。这使得从其他来源进行复制/粘贴变得不可能(但没有-1)。 - ekkis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接