将List <t>作为查询字符串</t>传递

时间:2012-05-07 08:33:40

标签: asp.net

我在列表中有一个包含国家/地区名称的列表。此列表需要作为Response.Redirect(页面)中的参数之一发送。

是否有直接的方法来执行此操作,以便在接收页面中,我可以将查询字符串输入到List并使用它。

谢谢, 斯利拉姆

4 个答案:

答案 0 :(得分:7)

我认为你可以做到这一点。但是如果是从数据库中提交的列表,则在修改页面上再次调用该函数。否则你必须做一个像这样的脏解决方案:

List<string> ls=new List<string>{"Sweden","USA"};
Response.Redirect("page.aspx?CountryList="+string.Join(",",ls));

在修改页面上执行此操作:

List<string> ls= QueryString["CountryList"].Split(',').ToList();

但请记住,您可以发送的查询字符串数量有限制。因此,如果列表包含许多项目,那么您可以达到该上限。

或将其存储在会话中:

Session["CountryList"]=ls;

然后在修改页面上。这样做:

List<string> ls=(List<string>)Session["CountryList"];
Session.Remove("CountryList");

完成后,请记得remove session。因此,session

中没有脏值

答案 1 :(得分:1)

从List

发送字符串
 Response.Redirect("page.aspx?CountryList=" + string.Join(",", (string[])TargetArrayList.ToArray()));

获取QueryString

string str = Request.QueryString["CountryList"];
    string[] arr = str.Split(',');
    TargetArrayList = arr.ToList();

答案 2 :(得分:0)

取决于您的国家/地区列表的大小。  我通常使用Session["CountriesNames"] as List<string>在asp.net webforms中的网页之间传递这些值。

答案 3 :(得分:0)

更好地使用标准格式...否?

string queryString = "?country=" + string.Join("&country=", yourList);