C#中的字符串格式,用于强类型视图

时间:2011-07-18 15:02:16

标签: c# asp.net-mvc asp.net-mvc-2 string-formatting strongly-typed-view

我想知道如何将强类型视图价格字段转换为2位数说明符,例如我在我的数据库中有一个货币字段,例如将15转换为15.0000,我想在视图中显示15.00,下面是代码:

<%: Html.TextBoxFor(model =>model.Price, new { maxlength = "5", style = "width:40px;" })%>

我尝试了一些没有成功的事情:

<%: Html.TextBoxFor(model => String.Format("{0:n}"model.Price), new { maxlength = "5", style = "width:40px;" })%>

5 个答案:

答案 0 :(得分:3)

您可以在模型上放置类似以下内容的属性:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:n}")]

如果您不想这样做,则需要使用“旧”样式文本框:

<%= Html.TextBox("Price", string.Format("{0:n}", Model.Price)) %>

答案 1 :(得分:2)

试试这个:

<%: Html.TextBoxFor(model => model.Price.ToString("0.00"), new { maxlength = "5", style = "width:40px;" })%>

更新

你也错过了原始语法中的一个逗号,这可能就是阻止它以这种方式工作的一切。应该是:

<%: Html.TextBoxFor(model => String.Format("{0:n}", model.Price), new { maxlength = "5", style = "width:40px;" })%>

此外,对于2位小数,请尝试这样:

<%: Html.TextBoxFor(model => String.Format("{0:0.00}", model.Price), new { maxlength = "5", style = "width:40px;" })%>

答案 2 :(得分:2)

您最好的选择是在视图模型上使用DataAnnotations显示格式属性。像这样:

[DisplayFormat(DataFormatString =“{0:n}”)]

然后使用Html.EditorFor(model =&gt; model.Price)来渲染输入。

答案 3 :(得分:0)

您是否尝试过使用mode.Price.ToString()并在ToString方法中指定所需的格式字符串?

答案 4 :(得分:0)

这可能会有所帮助。

private DateTime hDay;  
     [DisplayName("Hire Date")]  
     [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]  
     public DateTime HireDate  
     {  
       get  
       {  
         if (hDay == DateTime.MinValue)  
         {  
           return DateTime.Today;  
         }  
         else  
           return hDay;  
       }  
       set  
       {  
         if (value == DateTime.MinValue)  
         {  
           hDay = DateTime.Now;  
         }  
       }  
     }

OR

我们也可以这样使用

@Html.TextBoxFor(m => m.MktEnquiryDetail.CallbackDate, "{0:dd/MM/yyyy}")