Недавно я сам столкнулся с этим требованием и решил внедрить 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
Возможно, вам придется рефакторинг это для удовлетворения ваших конкретных потребностей.
попытайтесь формулировать свои результаты как Число ()
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();
печатала в Строковой форме.