如何在javascript文件中使用资源?

Rob*_*ski 7 asp.net-mvc asp.net-mvc-5

HY,

我有一个资源文件,我想在我的单独的 javascript文件中使用哪些条目,代码如下:

@TestMvc.Resources.Views.Home.Strings.MyString
Run Code Online (Sandbox Code Playgroud)

但是在我的javascript文件中,MVC 5框架不会解释代码行.

如何访问我的资源字符串?

感谢帮助 :)

Tho*_*der 6

MVC没有处理javascript文件中的资源引用是正常的,因为javascript是在客户端处理的,而MVC处理服务器端的所有内容......也就是说,我可以想到有三种方法可以如果你想...解决你的问题

1)将您的javascript代码包装在单独的.cshtml文件中.

如果这是一个选项,您可以创建一个部分视图,其中只包含对您的资源的引用,以及一个包含您的javascript的脚本标记..之后,您只需在实际视图中呈现您的局部视图(只是就像你将渲染你的javascript文件一样),让MVC在将它传递给你的客户端之前渲染你的javascript(带有所需的资源).

你的.cshtml文件示例:

@using TestMvc.Resources.Views.Home
<script type="text/javascript">
    $(document).ready(function(){
        alert('@Strings.MyString'); //Here you can use your resource string
    });
</script>
Run Code Online (Sandbox Code Playgroud)

如果检查呈现的脚本客户端,您将看到MVC已在您的javascript中插入了该字符串.

2)在.cshtml文件的脚本块中的变量中呈现字符串

并在你的.js文件中将它们视为局部变量(忽略告诉你它无法访问未声明的变量的intellisense)

<script type="text/javascript>
    var myResourceString= "@Strings.MyString";
</script>
Run Code Online (Sandbox Code Playgroud)

并在您的JavaScript中

alert(myResourceString);
Run Code Online (Sandbox Code Playgroud)

3)在隐藏字段中渲染字符串,并在javascript中获取值.

如果将所有javascript包装在.cshtml文件中不是一个选项,您始终可以将资源字符串放在隐藏字段中,如下所示:

<input type="hidden" id="myResourceString" value="@Strings.MyString">
Run Code Online (Sandbox Code Playgroud)

并在您的JavaScript中

alert(document.getElementById('myResourceString').value);
Run Code Online (Sandbox Code Playgroud)

当我输入这个时,我发现帖子有点旧,但它可能对将来的某个人有用...


alb*_*hin 4

我认为你不能在 JavaScript 文件中做到这一点。

如果您确实想这样做,则应该在 Razor 页面的内联脚本内编写此代码。