使用编辑器模板进行各种显示

时间:2011-02-02 09:03:47

标签: asp.net-mvc asp.net-mvc-3

我必须将小数显示为00.00。我有以下EditorTemplate

 @model Decimal?

@if (Model.HasValue)
{
   @Model.Value.ToString("00.00");
 }

我必须在文本框和标签中显示小数。如何使用上述模板以所需格式显示以下内容。

@Html.TextBoxFor(m=>@item.Price)
 @Html.LabelFor(m=>@item.Price)

3 个答案:

答案 0 :(得分:3)

您可以在模型上使用[DisplayFormat]属性:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:00.00}", NullDisplayText = "")]
public decimal? Price { get; set; }

然后显示:

@Html.DisplayFor(x => x.Price)

并编辑:

@Html.EditorFor(x => x.Price)

答案 1 :(得分:0)

在模板中,您可以使用

@Html.TextBox("", (Model.HasValue ? Model.Value.ToString("00.00") : String.Empty))

@if (Model.HasValue) {
  @Model.Value.ToString("00.00");
  @Html.TextBox("", Model.Value.ToString("00.00"))
}

然后在您的视图中使用

@Html.EditorFor(m => m.Price)%>

答案 2 :(得分:0)

创建一个 Views \ Shared \ EditorTemplates文件夹下的Decimal.ascx

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<decimal?>" %>
<% 
Html.LabelFor(m => m);
Html.TextBox (ViewData.TemplateInfo.GetFullHtmlFieldId(string.Empty), 

Model.HasValue? Model.Value.ToString(“00.00”):“00.00”, new {readonly =“readonly”})     %GT;

如果您只需要显示它,那么切换显示器编辑器(DisplayTemplates,DisplayFor等) readonly属性是使文本框为只读(不可编辑)