2016-10-02 61 views
1

我在MVC傳遞給 html頁面我也有「.myClass」的幾個div的,如果其中任何一個被點擊我調用函數獲得它們的ID陣列模式(每個人都有不同的整數ID),然後我想要使用此ID作爲數組的索引,我該怎麼做?導致此代碼無法正常工作。我可以使用js變量作爲mvc數組的索引嗎?

$(document).on('click', '.myClass', function (event) { 
    var id = parseInt($(this).attr('id')); 
    $("#Paragraph").html("@Model[id].name"); 
}); 
+0

需要輸出你的服務器端陣列的JavaScript變量作爲JSON做 – charlietfl

+1

因爲JavaScript代碼運行在瀏覽器和C#代碼運行在服務器上,無論是在不同的時間,這是不可能。您需要在具有新ID的屬性點擊後刷新頁面,然後在MVC視圖中使用請求參數。 –

+0

@TomášHübelbauer這是一種非常古老的思維方式 – charlietfl

回答

0

的C#代碼將在服務器時剃刀試圖渲染頁面執行你不能在那樣的js混合服務器代碼。您的點擊事件在剃刀發送生成的標記後發生在客戶端。

爲了您的具體使用情況,首先你需要看你的模型,並設置一個本地JavaScript數組。然後你可以讀取該數組中的一個項目。

假設你的模式是一些集合類型。

$(function(){ 

    //Store the Model to a local js variable. 
    var myArr = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)); 

    $(document).on('click', '.myClass', function (event) { 
    var id = parseInt($(this).attr('id')); 
    $("#Paragraph").html(myArr[id].name); 
    }); 

}); 

另一種選擇是讓你的服務器的Ajax調用您的操作方法接受的唯一ID,使用它重建實體,併發送回客戶端和客戶端將使用它。

相關問題