我有以下場景(這只是實際場景的一個示例,因爲實際是很多代碼)。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 }
我的問題是如何向控制器發佈模型的數組,其數據在表單中?
一個很好的問題...我會編輯我的問題,包括該信息。 – StuartMc 2014-09-11 08:23:30
你是否確實在任何地方寫過'stuffItems'?什麼是「東西」?關於javascript代碼的其他一些注意事項:檢查一個數組是否有任何內容可以執行'if(array.length)'。要添加一個項目到一個數組,你可以使用'array.push(item)' – xec 2014-09-11 08:51:17
對不起,是的,它說的東西[stuff.length]應該說stuffItems [stuffItems.length]。感謝js的信息...我會做出這些改變。 – StuartMc 2014-09-11 09:05:26