2015-04-06 22 views
1

我有这样的模式:DataFormatString:现场必须是数字

[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

当你点击保存时会发生什么? – DavidG

+0

我得到这个错误''字段价格必须是一个数字'''http://piclair.com/data/2c6in.jpg – Forza

+0

换句话说,它根本不会保存 – Forza

回答

1

您必须型号

[DataType(DataType.Currency)] 
public decimal SpotPrice { get;set;} 
[DataType(DataType.Currency)]
0

我有与货币和日期格式相同的问题。如果没有人有一个妥善的解决办法,解决方法就是让SpotPrice一个字符串,并验证它的服务器端:

public string SpotPriceStr { get; set; } 

内的控制器,转换为十进制,如果失败,添加一个错误的ModelState。

相关问题