C# 将数据从视图传输到javascript的最佳方法

C# 将数据从视图传输到javascript的最佳方法,c#,javascript,asp.net-mvc-3,hidden-field,C#,Javascript,Asp.net Mvc 3,Hidden Field,我在一个Asp.NETMVC3项目中工作,在我的一个javascript文件中,向用户显示一条消息。此邮件当前使用一种语言,但我希望此邮件使用多种语言。我不想将这些语言直接存储在javascript文件中,而是存储在数据库中。我想知道是否可以将数据(字符串)从视图传输到javascript文件 我发现的一个解决方案是在隐藏字段中设置视图中的数据,然后从javascript文件中提取数据。这个解决方案的问题是我必须放置很多隐藏字段,这很难维护 这个问题还有其他解决方案吗?是的,您的解决方案是正确的

我在一个Asp.NETMVC3项目中工作,在我的一个javascript文件中,向用户显示一条消息。此邮件当前使用一种语言,但我希望此邮件使用多种语言。我不想将这些语言直接存储在javascript文件中,而是存储在数据库中。我想知道是否可以将数据(字符串)从视图传输到javascript文件

我发现的一个解决方案是在隐藏字段中设置视图中的数据,然后从javascript文件中提取数据。这个解决方案的问题是我必须放置很多隐藏字段,这很难维护


这个问题还有其他解决方案吗?

是的,您的解决方案是正确的。您需要做的只是适当地调整模型,并使用Razor语法“按照以下方式”将值从服务器传递到客户端:


yourapi.foo('@Model.SomeValue');

您可以尝试JavaScriptModel()

使用此库,您可以通过在控制器操作中调用以下函数来添加变量:

this.AddJavaScriptVariable("VariableNameInJavaScript", SomeValue);
您可以传递基本类型或复杂类型

此外,您可以在控制器操作中使用以下代码执行javascript函数:

this.AddJavaScriptFunction("FunctionInJavaScript", SomeParameter, AnotherParameter);

Thanx@Xander试图帮助我。我已经考虑过你的建议,但是如果javascript已经在客户端浏览器的缓存中,那么从视图中赋值会被传输吗?如果javascript文件在浏览器缓存中,并且视图在服务器端分配了一个值,那么浏览器将永远不会下载该值的javascript文件,否则我的逻辑可能会出错+1哼。。。。我认为这个解决方案缺乏“关注点分离”,但它将帮助我防止@Model和脚本标记中的其他内容合并,因此,这是好的。这取决于您对关注点分离的看法:)通过这种方式,您可以将javascript与视图分离,并传输您的“javascript模型”,这些都是javascript的变量,并将其添加到客户端的javascript视图中。
this.AddJavaScriptFunction("FunctionInJavaScript", SomeParameter, AnotherParameter);