2015-06-08 76 views
-3

我有以下代碼如何將JavaScript中的變量傳遞給C#?

function insertDataToSurface(i) { 

    $("[name=[" + i + "].Height").val('@Model.Sides.SingleOrDefault(a => a.Name == "А").Surfaces.ElementAt(i))'); 

} 

錯誤

無法解析符號 「I」

+1

Razor是服務器端代碼 - 它在發送到客戶端之前在服務器上解析。一個JavaScript變量('我')甚至不存在在這一點上。 –

+0

您不能將JavaScript循環變量與剃鬚刀語法混合使用。視圖中的剃鬚刀在頁面發送到客戶端之前進行處理。 Javascript只是處理客戶端(在頁面離開服務器之後)。這就是爲什麼當.NET嘗試渲染視圖時,你會遇到壞符號。 – Tommy

回答

2

要定義JavaScript函數,它接受一個參數i,那麼你要使用它在C#代碼@Model.Sides.SingleOrDefault(a => a.Name == "А").Surfaces.ElementAt(i))。對於後面那段代碼有效,服務器上必須存在i,而不是作爲客戶端功能的參數。

假設選擇的確需要發生在客戶端上,你有幾個基本選項:

  1. 發送所有Surfaces傳達給客戶,並使用i功能內選擇所需的元素該數據
  2. 將JavaScript調用回請求包含數據的部分視圖的服務器,並提供i作爲URL的參數。
相關問題