2013-01-07 80 views
1

我有一個模型,像這樣:.NET MVC:如何讓模型聯編程序將null指定給列表屬性?

class Model { 
    public IList<Item> Items { get; set; } 
} 

class Item { public int Id { get; set; } } 

我發送給帶有模型作爲參數的操作方法的請求。該請求包含以下鍵值對:「Items=" (i. e.Items=null)默認的模型粘合劑項目集合爲1個null項目,在這裏我想列表屬性本身是null(或至少是空的)的列表

有沒有辦法做到這一點?

很明顯,我可以做一些自定義模型綁定,但我更喜歡一個解決方案,可以使用默認模型聯編程序(可能會修改請求的格式)工作。

+0

@MystereMan我沒有使用listBox。我正在發出ajax請求,因此可以直接控制鍵值對 – ChaseMedallion

+0

@ChaseMedallion - 如果是這種情況,如果它沒有發送'Items',那麼是什麼阻止了你?我們可以看到AJAX請求代碼嗎? – Omar

+0

@Omar請求中的值以JSON格式(從先前的請求)到達瀏覽器。然後我用這些相同的值做一個帖子。這使用常見的JS代碼,所以我寧願不修改它來專門處理Items屬性。 – ChaseMedallion

回答

0

你可以用你想要的行爲添加一個屬性到課程中

public property MySanitizedItemsList 
{ 
    get 
    { 
     if (Items.Length == 1 && Items[0] == null) 
      return null 
     else 
      return Items; 
    } 
} 
0

假設你使用jQuery,我將它擴大到能夠序列化的形式來反對

$.fn.serializeObject = function() 
{ 
var o = {}; 
var a = this.serializeArray(); 
$.each(a, function() { 
    if (o[this.name] !== undefined) { 
     if (!o[this.name].push) { 
      o[this.name] = [o[this.name]]; 
     } 
     o[this.name].push(this.value || ''); 
    } else { 
     o[this.name] = this.value || ''; 
    } 
}); 
return o; 
}; 

然後,我可以簡單地獲取表單到一個變量:

var data = $('form').serializeObject(); 

待辦事項我的測試知道我是否要刪除一個屬性

if(true){ 
    delete data.Items; 
} 

n通常使用ajax提交數據。

相關問題