2012-06-17 19 views
0

我正在使用asp.net mvc 3.在我的一個頁面中。我需要從列表對象中獲取一個字符串列表。 所以我這樣做:javascript可以從MVC中獲得價值嗎?

@{ 
    var orderIds = from s in Model.Orders 
        select s.id; 

} 

,並從我的Ajax調用之一,我將需要「orderIds」

$("#renderBtn").click(function() { 
      var inputData = { 
       'orderIds': need to get the order ids here 
      }; 

      $.ajax({ 
       url: '/Order/ExtraData', 
       data: inputData, 
       type: 'POST', 
       contentType: 'application/json; charset=utf-8', 
       dataType: 'json', 
       success: function (result) { 
        .... 
       }, 
       error: function() { 
        ... 
       } 
      }); 
     }); 

任何想法我如何能得到orderIds和JavaScript中使用? 謝謝

+0

控制器需要將此信息提供給視圖(這是jQuery代碼)。所以爲這個控制器創建一個路線'/ Order/ExtraData'。 (我不知道asp.net,所以我不能給你更多的細節) –

+0

我構建了一個隱藏的值,視圖填充價值和存儲在隱藏的領域..然後JavaScript從它讀取..解決我的問題:) – jojo

回答

2

您的代碼aboce定義orderIds是一個服務器端變量;你需要我們一個客戶端變量。您需要在創建視圖時在頁面底部附近的script塊中定義該變量。

@{ 
    var orderIds = string.Join(",", Model.Orders.Select(s => s.id).ToArray()); 
} 
<script> 
        var orderIds  = [@orderIds] 
</script> 

警告:該代碼可能不是完美的,並且可能無法編譯,但應該給你一個想法如何繼續。

+0

偉大thx爲你回答。讓我試試 – jojo

+0

不..不工作...頁面不會加載,如果我這樣做 – jojo

+0

@shrimpy更新,這應該編譯和工作。 –

1

如果您不能(或不願)使用內嵌的JavaScript和保持它的所有分開,你可以做這樣的事情:

@{ 
    var orderIds = string.Join(",", Model.Orders.Select(s => s.id).ToArray()); 
} 

<input type="hidden" id="orderIds" value="@orderIds" /> 

然後在你的JavaScript/jQuery的:

orderIds = $('#orderIds').val();