2010-08-17 33 views
2

我已經在.NET中定義了一個對象類型,我想在列表<>中作爲ASP.NET MVC操作方法的輸入接收該對象類型?如何將對象列表傳遞給使用jQuery的ASP.NET MVC操作?

這裏是我試圖接收的操作方法和類。

public class WhereClause 
    { 
     public string ColumnInformation { get; set; } 
     public string WhereValue { get; set; } 
     public string AndOr { get; set; } 
     public string Comparer { get; set; } 
    } 

    public ActionResult Grid(string query, int skip = 0, int take = 50, List<WhereClause> whereClauses = null) 
    { 
     GridViewModel gvm = new GridViewModel(); 
     gvm.Query = query; 

而且這裏是我從一組使用jQuery錶行建立的集合,然後調用jQuery的阿賈克斯()方法中的JavaScript。

var whereClauses = []; 

    // Iterate over every row in the table and pull the values fromthe cells. 
    divQueryWidget.find('.tblWhereClauses tr').each(function (x, y) { 
     var tds = $(y).find('td'); 
     var columnInformation = $(tds[0]).html(); 
     var whereValue = $(tds[1]).html(); 
     var andOr = $(tds[2]).html(); 
     var comparer = $(tds[4]).html(); 

     // Create a whereClause object 
     var whereClause = {}; 
     whereClause.ColumnInformation = columnInformation; 
     whereClause.WhereValue = whereValue; 
     whereClause.AndOr = andOr; 
     whereClause.Comparer = comparer; 

     whereClauses.push({ 
      ColumnInformation: columnInformation, 
      WhereValue: whereValue, 
      AndOr: andOr, 
      Comparer: comparer 
     }); 

    }); 

    //divQueryWidget.find('#queryResultsGrid'). 
    $.ajax({ 
     type: 'GET', 
     url: '<%= Url.Action("Grid", "Query") %>', 
     dataType: 'html',  
     data: { query: divQueryWidget.find('#activeQuery').val(), whereClauses: whereClauses }, 
     success: function (data, textStatus, XMLHttpRequest) { divQueryWidget.find('#queryResultsGrid').append(data); divQueryWidget.find('.loading').css('visibility', 'hidden'); } 
    }); 

這裏是事情變得有趣的地方。調用javascript時,表中有兩行應該傳遞給MVC操作,請注意,在調試代碼時,如何在列表中創建兩個對象,但其屬性未填充。

alt text

我在做什麼錯的是我的防止Javascript對象被轉換成.NET列表<>類型?我應該使用數組嗎?我需要將某些東西標記爲可序列化嗎?

回答

0

我會對結果感興趣。我從來沒有試圖用jQuery Ajax發佈這麼大的數據塊,但我想它應該是可能的。

我認爲這裏的問題是關於標籤。 當你在一個普通的視圖中製作一個列表項時,例如用一個foreach循環,這些值的標籤有鍵。你錯過了那些鑰匙,我想這就是爲什麼它不起作用。

例如,我有一個列表,我用jQuery做的,但發送正常的回發。

中的FormCollection對象

我碰到下面的按鍵

[0] "Vrbl_Titel" string 
    [1] "Sch_ID" string 
    [2] "Vragen[0].Evvr_Vraag" string 
    [3] "Vragen[0].Evvr_Type" string 
    [4] "Vragen[1].Evvr_Vraag" string 
    [5] "Vragen[1].Evvr_Type" string 
    [6] "Vragen[2].Evvr_Vraag" string 
    [7] "Vragen[2].Evvr_Type" string 

一個Vragen對象有兩個字符串,如你所看到的,所以這是它的外觀,我想這是你怎麼也使它在jQuery中,在發佈到服務器之前。

但要小心,括號內的整數應該沒有中斷。如果你有一箇中斷(例如,0 1 2 4 5 6),那麼MVC將停在2.

0

這可能與Jquery發送的包含在圓括號中的對象字段的名稱有關(可以在Firebug中進行確認)。

相關問題