2015-06-04 3 views
-1

Вот метод:Как проверить, если значение несколько или не ключевое значение с #

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"

Я хочу, чтобы проверить состояние доступа, что ..

Я новичок в этой области, поэтому, пожалуйста, дайте мне какие-либо предложения для более разъяснений keyvaluepair

+0

мне трудно понять ваш вопрос – Automatico

+0

mm..in Короче я хочу, чтобы проверить, если значение одного или нескольких, и если несколько, то проверьте еще раз, если он содержит массив или только одно значение @ Cort3z – Dhara

+0

Это не ясно, что вы подразумеваете под «одиночным» значением или «множественным» значением. В каком формате вы отправляете параметры? Дайте образец, пожалуйста. –

ответ

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. 
} 
+0

Спасибо большое ... работает. Был второй вопрос и в том, что в нескольких значение, если одно значение там или несколько значений. .., чтобы проверить, что .. – Dhara

+0

@debin, это то, что я имел в виду, данные внутри сериализуются в jqGridRequest, поэтому вы можете выполнить нужную задачу, установив условие. Но если вы действительно хотите знать, может ли его multi или single, то u может использовать var fields = g.GetType(). GetProperties(); bool hasSingleValue = fields.Count (x => x.GetValue (g, null)! = Null) == 1; это знать, будет ли его однозначным, если он будет однозначным, тогда будет все значение свойства null, кроме одного, иначе его кратное. – Dreamweaver

+0

спасибо за ур ответ :), но я получил ошибку, пока есть одно значение «несоответствие параметра» .. у вас есть какие-либо идеи об этом? – Dhara

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 
} 
+0

http://www.nudoq.org/#!/Packages /Lib.Web.Mvc/Lib.Web.Mvc/JqGridRequest из ссылки ясно, что у JqGridRequest будут свойства вместо полей. так что ваше решение может не работать здесь, – Dreamweaver

+0

Я не использовал JQGrid, поэтому я просто предположил, что это обычный объект :) –

+0

thnx это тоже помогло :) – Dhara

Смежные вопросы