2

我本质上想将多行字符串从 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 表达式转换为类型“字符串”,因为它不是委托类型

@Js.Tsc(@<text>线。

我以为.ToString()会正确地投射它。有没有办法做到这一点?

我知道我可以使用@"-style 字符串,但这使得在两者之间编写代码更加复杂。

4

1 回答 1

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);")
于 2012-12-27T13:30:27.473 回答