Я выполняю рефакторинг приложения ASP.NET MVC, которое содержит Grid, который использует удаленную фильтрацию, сортировку и разбиение на страницы, в настоящее время оно использует строку для передачи оператора сравнения, который должен быть применен, я хотел бы изменить это на Enum:
Public Class MyController
Inherits Controller
Public Function GetOrders(filterModels As List(Of FilterModel)) As JsonResult
'A member of FilterModel is of type EnumComparisonOperators here
...
End Function
End Class
Public Enum EnumComparisonOperators
<Description("=")>
Equals = 0
<Description("<>")>
NotEquals = 1
<Description("<=")>
LessThanOrEquals = 2
<Description(">")>
GreaterThan = 3
<Description(">=")>
GreaterThanOrEquals = 4
End Enum
В представлении:
//In the real code, my ajax call is in a callback from a third party
//component that just passes these loadOptions
var loadOptions = {
filterModel: {
operator: "=" //Replacing this string with "Equals" causes the code to work
//But my application logic needs a "=" sign, so I'd like to avoid
//converting back and forth
}
};
//The exception gets thrown the server when it receives this post call
$.post("/My/GetOrders", loadOptions);
Моя проблема в том, что это приводит к исключению (= не является допустимым значением для EnumComparisonOperators.), Так как вызывающий компонент сетки использует строку "=" для операции "равно", и контроллер не анализирует это автоматически, поэтому мой вопрос:
Есть ли способ для меня изменить / декорировать / настроить Enum, чтобы "=" распознавался контроллером как действительное значение, а не "Равно".
Так что, по сути, я пытаюсь добиться поведения, которое получилось бы, если бы =
было именем значения моего перечисления, но = это специальный символ, поэтому я использовал Equals
и ищу конфигурацию, которая бы его сделала вести себя как =
, это означает, что при разборе и сериализации следует использовать =