Почему (0 <5 <3) возвращает истину?

Недавно я сам столкнулся с этим требованием и решил внедрить ActionFilter, чтобы справиться с этим.

public class ArrayInputAttribute : ActionFilterAttribute
{
    private readonly string _parameterName;

    public ArrayInputAttribute(string parameterName)
    {
        _parameterName = parameterName;
        Separator = ',';
    }

    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (actionContext.ActionArguments.ContainsKey(_parameterName))
        {
            string parameters = string.Empty;
            if (actionContext.ControllerContext.RouteData.Values.ContainsKey(_parameterName))
                parameters = (string) actionContext.ControllerContext.RouteData.Values[_parameterName];
            else if (actionContext.ControllerContext.Request.RequestUri.ParseQueryString()[_parameterName] != null)
                parameters = actionContext.ControllerContext.Request.RequestUri.ParseQueryString()[_parameterName];

            actionContext.ActionArguments[_parameterName] = parameters.Split(Separator).Select(int.Parse).ToArray();
        }
    }

    public char Separator { get; set; }
}

Я применяю это так (обратите внимание, что я использовал «id», а не «ids», так как это указано в моем маршруте):

[ArrayInput("id", Separator = ';')]
public IEnumerable<Measure> Get(int[] id)
{
    return id.Select(i => GetData(i));
}

И общественность url будет:

/api/Data/1;2;3;4

Возможно, вам придется рефакторинг это для удовлетворения ваших конкретных потребностей.

344
задан Michał Perłakowski 9 January 2016 в 12:13
поделиться

1 ответ

попытайтесь формулировать свои результаты как Число ()

if(Number(0) < Number(5) < Number(3)) {
    alert("True");
}

или попробуйте это:

if(Number(0) < Number(5) && Number(5) < Number(3)) {
    alert("True");
}

я погуглил это, потому что я добирался (3 >= 20) //returning true, и я предполагаю, что JavaScript пытался проверить 3 как булевская переменная, потому что я получал это значение от эти elm.getAttribute(); функция, которая console.log(); печатала в Строковой форме.

0
ответ дан 23 November 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: