我基本上想要从Razor / cshtml视图内部将多行字符串传递给函数。
我希望我可以使用<text>
来完成此任务。
以下是我正在尝试的内容:
@Js.Tsc(@<text>
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
var greeter = new Greeter("world");
var button = document.createElement('button')
button.innerText = "Say Hello"
button.onclick = function() {
alert(greeter.greet())
}
document.body.appendChild(button)
</text>.ToString())
但我还是得到了
编译器错误消息:CS1660:无法将lambda表达式转换为类型'string',因为它不是委托类型
在@Js.Tsc(@<text>
行。
我认为.ToString()
会正确投射它。有没有办法做到这一点?
我知道我可以使用@"
- 样式字符串,但这使得编写代码更复杂。
答案 0 :(得分:1)
Razor仍然是C#代码,所以我想你会像传统的其他字符串参数那样传递脚本。但是你必须逃避任何特殊字符,例如双引号。我认为你不需要@<text>
。
@Js.Tsc("class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return \"Hello, \" + this.greeting;
}
}
var greeter = new Greeter(\"world\");
var button = document.createElement('button')
button.innerText = \"Say Hello\"
button.onclick = function() {
alert(greeter.greet())
}
document.body.appendChild(button);")