将Razor函数分配给JavaScript变量?

Osa*_*ama -1 html javascript asp.net razor

我有一个JavaScript函数,我想在其中调用Razor C# Function它,我知道它在HTML中很容易但在JavaScript中我收到很多编译错误我尝试了这个<text> tag技巧但没有任何效果.

getHTML是我的JavaScript函数,getPageSource是一个返回字符串的C#函数:

<script language="javascript" type="text/javascript">

        function getHTML() {
            var html = "@getPageSource("http://www.google.com")" ;       
            alert(html);
        }

</script>
Run Code Online (Sandbox Code Playgroud)

@getPageSourceHTML上方定义的位置,并且在HTML代码中运行良好

有没有办法将一些Razor代码分配给JavaScript变量?

Joã*_*ões 5

您无法在客户端执行服务器端功能.Razor仅用于在生成要在服务器中返回的HTML代码时为您提供一些逻辑.

如果这是一个返回String的C#函数,则应将其包含在引号内,否则在浏览器解析响应时不会将其解释为Javascript字符串.

var html = '@getPageSource("http://www.google.com")';
Run Code Online (Sandbox Code Playgroud)

请记住,如果您的getPageSource("http://www.google.com")返回带有引号的字符串,则javascript将不一致且无法创建您的JS字符串.想象一下你的方法返回了<div> ' hello ' </div>.这最终会像:

var html = '<div> ' hello ' </div>';
Run Code Online (Sandbox Code Playgroud)

看到问题?

请参阅此内容将HTML C#String转换为可用作JS String的字符串. http://codeasp.net/blogs/raghav_khunger/microsoft-net/722/how-to-escape-single-quotes-in-c-so-that-the-string-can-be-used-in-javascript

您必须更换所有的'\\'.请记住,您的字符串将完全传递给HTML代码.想象一下你的代码正在返回"It's blue".当在HTML中写入时,它将结束为var str = 'It's blue'(注意"s blue"将被视为在字符串之外并且将由浏览器给出解析错误).要在JS中编写它,你需要这样的东西var str = 'It\'s blue',浏览器会知道引用不是结束字符串引用,但它包含在字符串中.要在C#中的破折号,您在返回的字符串必须是"It\\'s blue"一旦更换的'\\'