我的模型:
[Required(ErrorMessage = "Required field")]
[Display(Name = "Price")]
public decimal Price { get; set; }
我的观点: 有一个包含其他几个输入字段和一个价格输入字段的表单
@Html.EditorFor(model => model.Price, new { htmlAttributes = new { @class = "form-control"} })
问题:
我尝试过的事情: 有关SO的话题很多,所以我尝试了一些建议,但不幸的是没有成功。
Application_Start()中的建议A- System.Globalization.CultureInfo.DefaultThreadCurrentCulture = new System.Globalization.CultureInfo("pt-PT");
建议B-将<globalization uiCulture="pt-PT" culture="pt-PT" />
放入web.config
建议C-(绝望)data_val = "false"
以禁用浏览器验证。当我这样做时,我发现两件事:如果我输入2.3,则0到达控制器;如果我输入2,3,则“ 2.3”(带点)的值到达控制器,但是在保存到数据库中后丢失了小数部分,我的意思是在数据库表中仅保存了“ 2”
建议D-即使我在代码上强加一个逗号,当我在调试模式下检查它时,我也会看到它使用的是点并且存储在BD中仅存储“ 2”。怎么可能呢?
成分IngredientToAdd =新成分 { 名称=成分名称, 价格= Decimal.Parse(“ 2,3”), 增值税=成分增值税 };
if (ModelState.IsValid)
{
db.Ingredients.Add(ingredientToAdd);
db.SaveChanges();
return RedirectToAction("Index");
}