2012-08-02 40 views
1

我在一個Asp.Net MVC 3項目中工作,在其中一個JavaScript文件中向用戶顯示一條消息。此消息目前使用一種語言,但我希望此消息使用多種語言。我不想將這些語言直接存儲在JavaScript文件中,而是存儲在數據庫中。我想知道是否可以將數據(字符串)從視圖傳輸到JavaScript文件。將數據從視圖傳輸到javascript的最佳方式

我發現的一個解決方案是從我的視圖中隱藏字段中設置數據,然後從我的JavaScript文件中提取它。這個解決方案的問題是我必須放置很多隱藏的字段,這很難維護。

有沒有其他解決方案來解決這個問題?

+0

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

回答

1

是的,你在正確的道路上。所有你需要做的是適當地滋潤你模型,並用剃刀語法從服務器到客戶端傳遞價值「的內容大致如下」:

<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

2

您可以嘗試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

相關問題