2014-03-26 49 views
0

我有一個POCO模型如下:如何正確發佈Razor視圖中的十進制值?

public class Tool 
{ 
    [Key] 
    public int ID { get; set; } 

    public int QtyOnHand { get; set; } 


    [DisplayFormat(DataFormatString = "{0:#.####}")] 
    public decimal SizeUS { get; set; } 
    public string Location { get; set; } 
    public int OriginalID { get; set; } 


    [NotMapped] 
    public bool Selected { get; set; } 

    [NotMapped] 
    public bool Selectable { get; set; } 

} 

在我的Razor視圖我有:

@Html.EditorFor(model => model.SizeUS)      
@Html.ValidationMessageFor(model => model.SizeUS) 

,我已經是SizeUS值被四捨五入爲1/100發佈時的問題控制器。我希望能夠發佈高達1/1000或1/10000的值。我會怎麼做?

+0

如果您刪除了「DisplayFormat」屬性,會發生什麼情況?如果解決了這個問題,您可以使用HTML助手來格式化小數。 – Pete

回答

1

這是decimal編輯器是如何對貨幣的原因定義:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> 
<script runat="server"> 
    private object FormattedValue { 
     get { 
      if (ViewData.TemplateInfo.FormattedModelValue == ViewData.ModelMetadata.Model) { 
       return String.Format(System.Globalization.CultureInfo.CurrentCulture, 
            "{0:0.00}", 
            ViewData.ModelMetadata.Model); 
      } 
      return ViewData.TemplateInfo.FormattedModelValue; 
     } 
    } 
</script> 

此模板顯示有2個位數的默認精度的十進制值,因爲大多數用戶將使用十進制數來表示貨幣。請注意,如果您尚未應用格式字符串(這是if語句中檢查的目的),它纔會執行此操作。 <%=了Html.Encode(FormattedValue的)%>

裁判:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

您可以使用double代替,創建你自己的編輯器的模板,或者乾脆寫了一個HTML input控制。