我需要实现一个功能,允许用户以任何形式输入价格,例如:10 USD、10$、$10等。
我想通过为Price类实现自定义模型绑定器来解决这个问题。
class Price { decimal Value; int ID; }
表单包含一个价格数组作为键。
keys:
"Prices[0].Value"
"Prices[0].ID"
"Prices[1].Value"
"Prices[1].ID"
...
视图模型包含一个价格属性:
public List<Price> Prices { get; set; }
默认的模型绑定器在用户将一个可转换为十进制的字符串输入到值输入框时工作得很好。 我想要允许像“100美元”这样的输入。
迄今为止,我的价格类型的模型绑定器:
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;
}
我该如何实现一个自定义的模型绑定器以正确处理数组?