2014-09-11 167 views
0

我有以下場景(這只是實際場景的一個示例,因爲實際是很多代碼)。MVC將模式數組傳遞給控制器​​使用jquery ajax

::實體

public class stuff 
{ 
    public int ID {get;set;} 
    public string sometext {get;set;} 
} 

::型號

public class StuffModel 
{ 
    public IEnumerable<entites.stuff> myStuff 
} 

::查看

<form class="frmItem"...> 
    <input type="hidden" name="Item.ID" id="Item_ID" value="something" /> 
    <input type="text" name="Item.stuff" id="Item_stuff" value="some text" /> 
</form> 
<form class="frmItem"...> 
    <input type="hidden" name="Item.ID" id="Item_ID" value="something" /> 
    <input type="text" name="Item.stuff" id="Item_stuff" value="some text" /> 
</form> 

::控制器

[HttpPost] 
public ActionView ProcessStuff(StuffModel myModel) 
{ 
    ... 
} 

我已嘗試以下步驟做到這一點,但我不能讓它填充模式:

$('.btnRecalc').click(function() { 
    var stuffItems = new Array(); 

    $('.sItem').each(function() { 
     var flag = $(this).data('haschanged'); 
     if (flag != 0) { 
      stuff[stuff.length] = $(this).find('.frmstuffItem').serialize(); 
     } 
    }); 

    if (stuffItems[0] != null) 
    { 
     var response = $.ajax({ 
      url: '@Url.Action("dosomething")' 
     , type: 'POST' 
     , data: { myModel: JSON.stringify({ myStuff: stuffItems}) } 
     }); 
    }; 
}); 

對於Ajax調用我已經嘗試了所有以下的「數據」線:

, data: { JSON.stringify({ myStuff: stuffItems}) } 

, data: { JSON.stringify({ myModel: stuffItems}) } 

, data: { myModel: { myStuff: stuffItems} } 

, data: { myStuff: stuffItems } 

, data: { myModel: stuffItems } 

我的問題是如何向控制器發佈模型的數組,其數據在表單中?

+0

一個很好的問題...我會編輯我的問題,包括該信息。 – StuartMc 2014-09-11 08:23:30

+0

你是否確實在任何地方寫過'stuffItems'?什麼是「東西」?關於javascript代碼的其他一些注意事項:檢查一個數組是否有任何內容可以執行'if(array.length)'。要添加一個項目到一個數組,你可以使用'array.push(item)' – xec 2014-09-11 08:51:17

+0

對不起,是的,它說的東西[stuff.length]應該說stuffItems [stuffItems.length]。感謝js的信息...我會做出這些改變。 – StuartMc 2014-09-11 09:05:26

回答

0

嘗試

data: JSON.stringify({ myModel: { myStuff: stuffItems } }), 
contentType: 'application/json' 
+0

這恐怕不適合我。 – StuartMc 2014-09-11 09:58:12

+0

我注意到你沒有設置數據類型被髮送到服務器。答案已更新。現在它應該可以正常工作。 – SOReader 2014-09-11 11:33:29

+0

對不起,這個延遲...辦公室代理非常嚴格,我無法迴應。我想出了一種不同的方式來做我需要的東西,但我仍然想知道這一點。 – StuartMc 2014-09-25 21:27:14

相關問題