c# - 服务器和浏览器 ASP.NET MVC 之间的 CultureInfo 冲突

标签 c# javascript asp.net-mvc validation cultureinfo

我的模型类:

public class Person
{
    [DataType(DataType.Currency)]
    public decimal Salary { get; set; }  
}

我的 Controller

public class PersonController : Controller
{
    public ActionResult Create()
    {
        var person = new Person();
        person.Salary = 100; // setting default value
        return View(person);
    }
    public ActionResult Create(Person person)
    {
        // Save, validate, etc...
    }    
}

我的创建 View :

@model Person
<h2>Create person</h2>
@using (Html.BeginForm()) {

     <div class="editor-label">
        @Html.LabelFor(model => model.Salary)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Salary)
        @Html.ValidationMessageFor(model => model.Salary)
    </div>  
}     

点击提交后,页面显示以下不正确的验证错误:

enter image description here

请注意整数和小数之间的分隔符。我相信错误的验证失败源于文化信息差异。在服务器上 C# 使用逗号作为分隔符,在客户端 JS 需要一个点。解决此问题的安全方法是什么?

最佳答案

这个 StackOverflow 问题也可能是您正在寻找的解决方案:

How should I use EditorFor() in MVC for a currency/money type?

关于c# - 服务器和浏览器 ASP.NET MVC 之间的 CultureInfo 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20567461/

相关文章:

c# - Asp.net (MVC) 和 WPF (MVVM) 的比较 - 是否有等效的数据绑定(bind)?

c# - 监视文件的更改

c# - 两个 BackgroundWorker,一个 List<T>

javascript - BaconJS observable zip,示例属性映射失败

javascript - 这个 javascript if 语句有什么问题

c# - ASP.NET MVC 在验证之前修改 View 模型属性

c# - 如何将联接表传递给 MVC 中的 View ?

c# - 如何将引用程序集用于 Controller 脚手架

javascript - 如何在元素可用时插入该元素?

c# - IAppbuilder.UseWebApi 有什么作用?