質問

私は次のようにJavaScriptのデータオブジェクトを投稿しようとしています:

$.post(frm.attr("action"), data, function(res)
{
    // do some stuff
}, "json");

'データ' の構造をとる。

data
 - panelId
 - siteId
 - ConfiguredFactsheetId // this is an array of CheckBox ids that correspond to ConfiguredFactsheets
   - 123
   - 234
   - 345

は、これにより、両方のサイト&パネルが正しくインスタンス化されると、そのデータを結合させたが、Listオブジェクトがnullます。

public JsonResult Edit(Site site, Panel panel, List<ConfiguredFactsheet> configuredFactsheets)
{
    // do stuff
    return Json(success);
}

さて、私は私の「データ」オブジェクトのConfiguredFactsheetIdプロパティは、ID値の単なる配列であることを認識しています。私は、それぞれの値は、私のConfiguredFactsheetオブジェクトのconfiguredFactsheetIdプロパティに対応するように指定する必要がありますか?もしそうなら、私のデータオブジェクトは、

にフォームsimilartを取ります
data
 - panelId
 - siteId
 - ConfiguredFactsheet // this is an array of CheckBox ids that correspond to ConfiguredFactsheets
   - ConfiguredFactsheetId:123
   - ConfiguredFactsheetId:234
   - ConfiguredFactsheetId:345

が、私はオブジェクトに新しいConfiguredFactsheetIdを追加するたびに、それだけで、以前のものを上書きしますので、これは明らかに動作しません。

私は、フォームのクエリ文字列を構築した場合、私はこれを行うことができます知っている。

"&ConfiguredFactsheet[i].configuredFactsheetId = " + configuredFactsheetId;

私は、単一のデータ・オブジェクトのすべてを含んでいたいのです。

任意の提案ですか?私はより明確に何も(おそらく、すべてを!)を説明する必要がありますか?

おかげ

デーブ

役に立ちましたか?

解決

最後に、これは働いています:

var valuesArray = objCheckBoxes.map(function()
{
    return $.getAttributes($(this));
});

var obj = new Array();
$.each(valuesArray, function(item) { obj.push($(this)[0]); });

$.each(obj, function(i)
{
    // basically I take the rule where you need to append
    // the index to the type, and I apply it here.
    data["configuredFactsheets[" + i + "].configuredFactsheetId"] = $(this).attr("configuredFactsheetId");
});

注: $ .getAttributesする

について読みます

他のヒント

の代替が投稿することです。

?myValues=1&myValues=2&myValues=3

とのIEnumerable

として、それを受け入れます
public ActionResult DoSomething(IEnumerable<int> myValues) {
    ...
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top