Мне нужно реализовать функцию, позволяющую пользователям вводить цену в любой форме, то есть разрешать вводить 10 долларов США, 10 долларов США, 10 долларов США ...
Я бы хотел решить эту проблему, внедрив пользовательский механизм связывания моделей для класса Price.
class Price { decimal Value; int ID; }
Форма содержит массив или цены в качестве ключей
keys:
"Prices[0].Value"
"Prices[0].ID"
"Prices[1].Value"
"Prices[1].ID"
...
ViewModel содержит свойство «Цены»:
public List<Price> Prices { get; set; }
Связыватель модели по умолчанию работает хорошо, пока пользователь вводит преобразуемую в десятичную строку строку ввода.
Я хотел бы разрешить ввод, как "100 долларов США".
Мой ModelBinder для типа цены до сих пор:
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
Price res = new Price();
var form = controllerContext.HttpContext.Request.Form;
string valueInput = ["Prices[0].Value"]; //how to determine which index I am processing?
res.Value = ParseInput(valueInput)
return res;
}
Как реализовать пользовательскую модель Binder, которая правильно обрабатывает массивы?