模式迭代请求参数

时间:2010-12-21 23:52:41

标签: c# asp.net asp.net-mvc asp.net-mvc-2

我的视图不是强类型视图,我需要在控制器操作中迭代Request Params以确定发布的值。

有没有更好的方法来遍历nameValueCollection AllKeys?

我目前正在循环请求参数并正确设置值。

 foreach (var key in Request.Params.AllKeys)
 { 
     if (key.Equals("CustomerId"))
        queryObject.CustomerId = Request.Params[key];
     else if (key.Equals("OrderId"))
       queryObject.OrderId= Request.Params[key];
     //and so on
 }

我在这段代码中看到了相当多的重复。有没有更好的方法来解决这个问题?

4 个答案:

答案 0 :(得分:6)

也许是这样的?

queryObject.CustomerId = Request.Params["CustomerId"];
queryObject.OrderId = Request.Params["OrderId"];

答案 1 :(得分:6)

因为 NameValueCollection 不提供搜索方法,只需澄清您的代码,您就可以执行以下操作:

 foreach (var key in Request.Params.AllKeys)
 { 
      queryObject.CustomerId = key.Equals("CustomerId") ? Request.Params[key] : queryObject.CustomerId;
      queryObject.OrderId = key.Equals("OrderId") ? Request.Params[key] : queryObject.OrderId;
     //and so on ...
 }

答案 2 :(得分:2)

你能否从查询对象中使用反射来获取getProperties,然后通过它们来读取request.params中的相应项?

http://www.csharp-examples.net/reflection-property-names/

http://msdn.microsoft.com/en-us/library/kyaxdd3x.aspx

答案 3 :(得分:0)

看起来C#与Java Map相当:

Java Map equivalent in C#

如果没有其他工作,我建议建立一个Dictionary键值对,然后将Dictionary中的值读入类对象。