我有这个型号:
[DisplayFormat(DataFormatString = "{0:c}", ApplyFormatInEditMode = true)]
public decimal SpotPrice { get; set; }
在我的详细信息视图中,它将价格显示为“25,00”。当我尝试编辑价格时,该字段预先填入数据库条目“25,00”。当我立即点击保存时,我收到此错误:"The field SpotPrice must be a number."
根据question中给出的建议,我在Web中设置了我的全球文化.Config:
<system.web>
<globalization culture="nl-NL"/>
</system.web>
我也尝试过很多不同的DataFormatStrings,但是没有一个能让我摆脱那条错误信息。
我使用SQL Server存储价格。
编辑:更新了问题: 我该怎么做才能使这个价格字段正确验证?
编辑:这是我的编辑方法,用于保存新价格:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "CampingSpotId,SpotName,FieldName,Surface,Wifi,Water,Sewer,Reserved,Booked,SpotPrice,Type")] CampingSpot campingSpot)
{
if (ModelState.IsValid)
{
_campingspotrepository.SetModified(campingSpot);
return RedirectToAction("Index");
}
return View(campingSpot);
}
SetModified方法执行此操作:
public void SetModified(CampingSpot campingSpot)
{
db.Entry(campingSpot).State = EntityState.Modified;
db.SaveChanges();
}
答案 0 :(得分:1)
您必须在模型
中编写[DataType(DataType.Currency)]
[DataType(DataType.Currency)]
public decimal SpotPrice { get;set;}
答案 1 :(得分:0)
我在货币和日期格式方面遇到了同样的问题。如果没有人有适当的解决方案,解决方法是使SpotPrice成为字符串并在服务器端验证它:
http 200
在控制器中,转换为十进制,如果失败,则向ModelState添加错误。