我写了一个自定义模型绑定器。 在我的页面中,我有一个带有逗号分隔符掩码的数字文本框。 例如:
1234
在我的模型活页夹中,我在文本框中获得了价值:
var valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName)
并删除","从它:
actualValue = long.Parse(a, NumberStyles.Currency, CultureInfo.CurrentCulture);
一切正常,直到另一页我有两个同名的字段。 当我提交表单时,一个字段具有值" 0"并且一个字段具有另一个值(对于检验" 1")。 然后当我得到valueResult时:
var valueResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName)
它让我回答:" 1,0"然后当我删除","从它,它将是" 10"。
但是在默认的mvc模型绑定器中,当我有两个同名字段时,它会获得第一个字段的值。
我该怎样做默认mvc模型绑定器?
感谢。
答案 0 :(得分:0)
我不太了解自定义模型绑定器......但是如果你想将数字输入(使用逗号作为小数点分隔符)绑定到十进制,只需更改线程的文化或整个应用程序的更改。
例如:
public class MyModel
{
public decimal MyValue { get; set; }
}
现在转到你的web.config,在system.web里面(我来自巴西,所以在我的情况下,我使用了pt-BR文化,你应该改变你的文化):
<globalization culture="pt-BR" />
现在,MVC Model Binder将自动识别“逗号”作为小数分隔符,一切都应该运行良好。
我不确定它是否对你有帮助。