2012-05-24 12 views
29

Tôi đang cố định dạng một hộp văn bản Html.EditorFor để có định dạng tiền tệ, tôi đang cố gắng căn cứ vào chủ đề này String.Format for currency on a TextBoxFor. Tuy nhiên, văn bản của tôi vẫn hiển thị là 0,00 không có định dạng tiền tệ.Định dạng tiền tệ MVC

<div class="editor-field"> 
     @Html.EditorFor(model => model.Project.GoalAmount, new { @class = "editor-  field", Value = String.Format("{0:C}", Model.Project.GoalAmount) }) 

Có mã cho những gì tôi đang làm và đây là mã html cho trường đó trong chính trang web chứa trong div trường trình chỉnh sửa của khóa học.

<input class="text-box single-line valid" data-val="true" 
data-val-number="The field Goal Amount must be a number." 
data-val-required="The Goal Amount field is required." 
id="Project_GoalAmount" name="Project.GoalAmount" type="text" value="0.00"> 

Mọi trợ giúp sẽ được đánh giá cao, cảm ơn!

Trả lời

65

Bạn có thể trang trí bất động sản mô hình GoalAmount nhìn của bạn với [DisplayFormat] thuộc tính:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")] 
public decimal GoalAmount { get; set; } 

và trong giao diện đơn giản:

@Html.EditorFor(model => model.Project.GoalAmount) 

Đối số thứ hai của helper EditorFor không làm gì cả những gì bạn nghĩ rằng nó. Nó cho phép bạn chuyển thêm ViewData vào mẫu trình soạn thảo, nó không phải là htmlAttributes.

Một khả năng khác là để viết một mẫu biên tập tùy chỉnh cho tệ (~/Views/Shared/EditorTemplates/Currency.cshtml):

@Html.TextBox(
    "", 
    string.Format("{0:c}", ViewData.Model), 
    new { @class = "text-box single-line" } 
) 

và sau đó:

@Html.EditorFor(model => model.Project.GoalAmount, "Currency") 

hoặc sử dụng [UIHint]:

[UIHint("Currency")] 
public decimal GoalAmount { get; set; } 

và sau đó:

@Html.EditorFor(model => model.Project.GoalAmount) 
+1

hoạt động tốt, cảm ơn! :) –

+0

Chuỗi định dạng cho Đơn vị tiền tệ (pao) mà không có pence là gì? Tôi không thể tìm thấy nó như được nêu ra. Cảm ơn. – Doomsknight

+1

@ Doomsknight, bạn đã thử '" {0: C0} "' chưa? –