将<text>转换为字符串?</text>

时间:2012-12-26 22:03:35

标签: c# razor

我基本上想要从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()会正确投射它。有没有办法做到这一点?

我知道我可以使用@" - 样式字符串,但这使得编写代码更复杂。

1 个答案:

答案 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);")