クエリ文字列としてC#オブジェクトを渡したい&私は次のコードを使用して目的の結果を得ました。上記のコードを使用してクエリ文字列としてC#オブジェクトを渡す
class Program
{
public static string GetQueryString(object obj)
{
var properties = from p in obj.GetType().GetProperties()
where p.GetValue(obj, null) != null
select p.Name + "=" + HttpUtility.UrlEncode(p.GetValue(obj, null).ToString());
return String.Join("&", properties.ToArray());
}
static void Main(string[] args)
{
Filters fil = new Filters();
fil.Age = 10;
fil.Id = "some id";
fil.Divisions = new List<string>();
fil.Divisions.Add("div 1");
fil.Divisions.Add("div 2");
fil.Divisions.Add("div 3");
fil.Names = new List<string>();
fil.Names.Add("name 1");
fil.Names.Add("name 2");
fil.Names.Add("name 3");
var queryStr = GetQueryString(fil);
Console.ReadKey();
}
}
public class Filters
{
public List<string> Names { get; set; }
public List<string> Divisions { get; set; }
public int Age { get; set; }
public string Id { get; set; }
}
は、結果、次の私を与える:
Names=System.Collections.Generic.List%601%5bSystem.String%5d&Divisions=System.Collections.Generic.List%601%5bSystem.String%5d&Age=10&Id=some+id
出力は有効なクエリ文字列ではありません。私は、POCOクラスをクエリ文字列形式に変換するのに助けが必要です。
私は同様のJavaScriptオブジェクトを持っており、正しいクエリ文字列に変換することができます。 jQueryのを使用して
{
"id":"some id",
"age":10,
"division":["div 1","div 2","div 3"],
"names":["name 1","name 2","name 3"]
}
私は$.param(obj)
を言うことができ、これはになります:
"id=some+id&age=10&division%5B%5D=div+1&division%5B%5D=div+2&division%5B%5D=div+3&names%5B%5D=name+1&names%5B%5D=name+2&names%5B%5D=name+3"
私はC#を使用して同様の出力をしたいです。
1)長いクエリ文字列はなぜですか?なぜIDじゃないの? 2)、もしあれば、代わりにJSONにシリアル化するのはなぜですか? –
OK、それを行うコードを書いてください。何が問題になっていますか? –
@RoyiNamir:この情報をクエリ文字列としてWebページに送信する必要があります。私はページを呼び出すことを試みていて、そのページはクエリ文字列として渡される値を期待しています。 – SharpCoder