0

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

1,234

在我的模型活页夹中,我在文本框中获得了价值:

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 模型绑定器之类的操作?

谢谢。

4

1 回答 1

0

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

例如:

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

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

<globalization culture="pt-BR" />

现在,MVC 模型绑定器将自动将“逗号”识别为小数分隔符,一切正常。

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

于 2014-05-28T13:33:51.277 回答