フォーム値をAJAX経由でC#Webサービスに送信しようとしています。 JavaScriptSerializer.Deserializeを使用して、JSONをC#クラスに変換します。以下は、クラスである:JSONをC#にデシリアライズする - チェックボックスの値
[WebMethod]
public string UpdateTags(string PostParameters)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
var tagData = serializer.Deserialize<TagData>(PostParameters);
}
つ以上のチェックボックスがチェックされている場合は、この作品:
[Serializable]
[DataContract(Name = "PostParameters")]
public class TagData
{
public TagData()
{
}
[DataMember(Name = "TargetId")]
public string TargetId { get; set; }
[DataMember(Name = "TargetType")]
public string TargetType { get; set; }
[DataMember(Name = "Tags")]
public List<string> Tags { get; set; }
}
ここで呼び出されるメソッドです。 Tagsプロパティは正常に読み込まれます。ただし、チェックされる項目が2つ未満の場合は、変換エラーが発生します。シリアライザは、単一の文字列値をListオブジェクトに変換することはできません。ここで
JSONを1つのチェックボックスにチェックして送信する方法である:私は私の中でタグのプロパティを変更しようとし {"Tags":["12","5","2"],"TargetId":"36946","TargetType":"Officer"}
:ここ {"Tags":"14","TargetId":"36946","TargetType":"Officer"}
はJSONが複数のチェックボックスにチェックして送信する方法でありますC#クラスを文字列配列に置き換えます: public string[] Tags { get; set; }
しかし、JSONはまったくマップされませんでした。
私はまた、[]そうのようなチェックボックスの入力名に追加しようとしました: {"Tags[0]":"14","TargetId":"36946","TargetType":"Officer"}
と確認され、複数のチェックボックス: <input type="checkbox" name="tags[]" />
これは、1つのチェックボックスにチェックして、ほど渡ってJSONを送りました。 {"Tags[0]":"14","Tags[1]":"19","TargetId":"36946","TargetType":"Officer"}
これは、文字列配列プロパティで動作するようですが、そのプロパティまたはListプロパティのいずれにもマッピングされません。 Tagsプロパティはマップできないため、常にnullになります。
UPDATEが - ここでJSONが
var params = $.toJSON({ 'PostParameters': JSON.stringify($inputs.serializeObject()) });
を生成しているところだと、ここでserializeObject()関数です:
serializeObject: function() {
var obj = {},
names = {};
$.each(this.serializeArray(), function (i, o) {
var n = o.name,
v = o.value;
if (n.includes('[]')) {
names.n = !names.n ? 1 : names.n + 1;
var indx = names.n - 1;
n = n.replace('[]', '[' + indx + ']');
}
obj[n] = obj[n] === undefined ? v
: $.isArray(obj[n]) ? obj[n].concat(v)
: [obj[n], v];
});
return obj;
}
すべてのヘルプは高く評価されています。 1つのチェックボックスの場合には一つの要素の配列を送信するために
それは '{" Tags [0] ":[" 14 "]でなければなりません。 – shakib
Jsonが送信される前にクライアント側でJsonが生成される場所を投稿できますか? – Taki
投稿をJSONの生成方法で更新しました – getoutofmylaboratory