给一个JavaScript变量赋值一个Razor函数

Assign a Razor Function to a JavaScript Variable?

本文关键字:一个 Razor 函数 赋值 JavaScript 变量      更新时间:2023-09-26

我有一个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>

其中@getPageSource定义在html之上,并且在html代码中工作良好

是否有办法分配一些剃刀代码到一个JavaScript变量

不能在客户端执行服务器端功能。Razor仅用于在服务器端生成要返回的HTML代码时提供一些逻辑。

如果这是一个返回字符串的c#函数,你应该把它用引号括起来,否则当浏览器解析你的响应时,它不会被解释为Javascript字符串。

var html = '@getPageSource("http://www.google.com")';

请记住,如果你的getPageSource("http://www.google.com")返回一个带引号的字符串,javascript将不一致,无法创建你的JS字符串。假设您的方法返回<div> ' hello ' </div>。结果会像这样:

var html = '<div> ' hello ' </div>';

看到问题了吗?

查看这个将HTML c#字符串转换成可以用作JS字符串的字符串。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"

getPageSource()是JavaScript函数还是c#函数?

如果是JavaScript,你不需要前缀@。如果是c#,那就加引号:

var html = '@getPageSource("http://www.google.com")';