自定义模型绑定中具有相同名称的两个字段

时间:2014-05-28 13:21:07

标签: c# asp.net-mvc model-binding modelbinders custom-model-binder

我写了一个自定义模型绑定器。 在我的页面中,我有一个带有逗号分隔符掩码的数字文本框。 例如:

  

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模型绑定器?

感谢。

1 个答案:

答案 0 :(得分:0)

我不太了解自定义模型绑定器......但是如果你想将数字输入(使用逗号作为小数点分隔符)绑定到十进制,只需更改线程的文化或整个应用程序的更改。

例如:

public class MyModel
{
      public decimal MyValue { get; set; }
}

现在转到你的web.config,在system.web里面(我来自巴西,所以在我的情况下,我使用了pt-BR文化,你应该改变你的文化):

<globalization culture="pt-BR" />

现在,MVC Model Binder将自动识别“逗号”作为小数分隔符,一切都应该运行良好。

我不确定它是否对你有帮助。