将数据从视图传输到javascript的最佳方式

将数据从视图传输到javascript的最佳方式

问题描述:

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

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

有没有其他解决方案来解决这个问题?

+0

以JavaScript的? – Yasser 2012-08-02 05:23:13

是的,你在正确的道路上。所有你需要做的是适当地滋润你模型,并用剃刀语法从服务器到客户端传递价值“的内容大致如下”:

<script src="@Url.Content("~/scripts/yourapi.js")"></script> 
<script> 
    yourapi.foo('@Model.SomeValue'); 
</script> 
+0

Thanx @Xander试图帮助我。我已经想过你的建议,但如果JavaScript已经在客户端浏览器的缓存中,从视图中分配值将被传输?如果JavaScript文件在浏览器缓存中,并且视图分配了值服务器端,则该值将永远不会被浏览器下载,或者我的逻辑中可能会出错? – Samuel 2012-08-02 14:00:39

您可以尝试JavaScriptModel(http://jsm.codeplex.com)。

有了这个库,你可以通过调用下面的函数在你的控制器操作添加变量:

this.AddJavaScriptVariable("VariableNameInJavaScript", SomeValue); 

您可以通过基本类型或复杂类型。

而且你可以在你的控制器动作执行与下面的代码JavaScript函数:

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

+1 Hum ....我认为这个解决方案缺乏“分离问题”,但它会帮助我防止在脚本标记中合并@Model和其他东西,因此,这很好。 – Samuel 2013-01-09 18:31:46

+0

这取决于你如何看待问题分离:)通过这种方式,你可以将javascript从视图中分离出来,并将你的“javascript模型”(这些都是javascript的变量)转移到你的javascript视图,这是客户端。 – acuntex 2013-01-10 08:47:31

+0

好点acuntex ! – Samuel 2013-01-10 15:54:31