无法将属性保存为十进制

时间:2017-09-18 19:32:37

标签: c# entity-framework razor html-helper

在我的模型中,我使用属性。

[Display(Name = "Pensja")]
public decimal? Salary { get; set; }

在编辑剃刀视图中,我想将值从4000,00更改为4000,50。 在视图中它看起来像这样。

<div class="form-group">
    @Html.LabelFor(model => model.Salary, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.Salary, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.Salary, "", new { @class = "text-danger" })
    </div>
</div>

我收到的消息是薪水必须是一个数字。我做错了什么?

3 个答案:

答案 0 :(得分:1)

我认为您的错误消息是在客户端(jscipt)并且认为您的语言是波兰语,因此您可能需要配置与您的语言环境相关的一些内容。

查看此网址http://msdn.microsoft.com/en-us/library/gg674880(VS.98).aspxhttps://weblogs.asp.net/scottgu/jquery-globalization-plugin-from-microsoft

或禁用您的客户端验证

  @{ Html.EnableClientValidation(false); }
    @Html.EditorFor(model => model.Salary, new { htmlAttributes = new { @class = "form-control" } })
    @{ Html.EnableClientValidation(true); }

答案 1 :(得分:0)

我检查了您的问题,此消息为Client validation消息,可能是真的。

您必须使用正确 valdiation脚本,因为货币分隔符与国家/地区不同

请查看此文validation-polish 并查看此https://jqueryvalidation.org/

答案 2 :(得分:0)

我也找到了另一种解决方案。 在视图中。

<div class="form-group">
                    @Html.LabelFor(model => model.Salary, htmlAttributes: new { @class = "control-label col-md-2" })
                    <div class="col-md-10">
                        <input type="text" name="UserSalary" id="UserSalary" value="@Model.Salary"/>
                    </div>
                </div>

在控制器中。

decimal salary;
                Decimal.TryParse(Request.Form["UserSalary"].ToString(), NumberStyles.Any, new CultureInfo("pl-PL"), out salary);
                user.Salary = salary;