以下是方法:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var parameters = filterContext.ActionParameters.ToArray();
if (parameters.Count() > 0)
{
foreach (KeyValuePair<string, object> data in parameters)
{
singleparameters = singleparameters + data.Key + ":" + " " + data.Value + ",";
}
singleparameters = singleparameters.Remove(singleparameters.LastIndexOf(','));
我想检查数据值是否包含单个或多个值。
如果数据是单个数据,那么key:req
和value: pagerecords:200
。
如果数据包含多个值,则检查值是否包含数组或单个值。例如:key:req
和values: pagerecords:200, pageinfo:"adsa", count:0, filter: records:200,cotnain:"asa"
我想检查条件是否访问..
我是这方面的新手所以请给我任何建议 更多澄清
答案 0 :(得分:0)
这可以帮助您检查值是单个还是多个:
var valueFields = data.Value.GetType().GetFields();
var fieldNumber = valueFields.Length;
//If fieldNumber = 1 it is single, otherwise it is multiple
然后你可以检查它是否包含任何数组
foreach(var fld in valueFields) {
bool isArray = fld.FieldType.IsArray; //true if the field is an array
}
答案 1 :(得分:0)
foreach (KeyValuePair<string, object> data in parameters)
{
if (data.Key == "request" && data.value is jqGridRequest)
{
var fields = g.GetType().GetProperties();
bool hasSingleValue = fields.Count(x => x.GetValue(g, null) != null) == 1;
}
}
从截图中可以清楚地知道data.value类型是jqGridRequest,所以我们可以直接利用该对象来检查或得到所需的值,实际上你也不需要做循环,直接转换对象并使用使用if else的财产。
jqGridRequest request = data.value as jqGridRequest;
if (request != null)
{
int pageindex = request.PageIndex;
//// so on other properties, get it and use it directly without looping.
}