2015-04-06 29 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。

相關問題