tôi thấy bài này về hiển thị và EditorTemplates cho MVC:Formatting tệ sử dụng mẫu trưng bày trong MVC
http://www.growingwiththeweb.com/2012/12/aspnet-mvc-display-and-editor-templates.html
Nó tạo ra một mẫu màn hình để dễ dàng hiển thị một số thập phân được định dạng với dấu hiệu tiền tệ.
Mô hình sử dụng trong ví dụ:
public class TestModel
{
public decimal Money { get; set; }
}
Màn hình hiển thị mẫu:
Views/Shared/DisplayTemplates/decimal.cshtml:
@model decimal
@{
IFormatProvider formatProvider =
new System.Globalization.CultureInfo("en-US");
<span class="currency">@Model.ToString("C", formatProvider)</span>
}
Trong trang web của tôi Tôi có một helper lớp học với một phương pháp để lấy một chuỗi tiền tệ được định dạng từ một số thập phân, vì vậy tôi sẽ thay thế ở trên bằng một cái gì đó như:
@model decimal
@(MyHelperClass.GetCurrencyString(Model))
Và cuối cùng là xem nơi chúng tôi muốn nhìn thấy đồng tiền được định dạng:
@model TestModel
@Html.DisplayFor(e => e.Money)
Output:
<span class="currency">$3.50</span>
tôi có thể thực hiện điều này mà không cần bất kỳ vấn đề. Nhưng tất nhiên tôi có quan điểm khác nhau, nơi tôi muốn xem một loại tiền tệ được định dạng. Nhưng trong một số trường hợp, tôi không muốn hiển thị ký hiệu tiền tệ.
Câu hỏi của tôi bây giờ là cách tôi nên triển khai biến thể nhỏ này mà không cần quá nhiều mã.
Đây là thực hiện hiện tại của tôi:
Tôi đã thay đổi mẫu hiển thị của tôi như thế này:
@model decimal
@{
bool woCurrency = (bool)ViewData["woCurrency"];
}
@(MyHelperClass.GetCurrencyString(Model)Model,woCurrency))
Dĩ nhiên tôi cũng đã thay đổi phương pháp GetCurrencyString chấp nhận thuộc tính bổ sung này.
Theo quan điểm của tôi bây giờ tôi phải cung cấp thuộc tính này quá:
@Html.DisplayFor(m => m.Money, new { woCurrency = true })
Vì vậy, thực sự tôi mọi thứ hoạt động như nó nên làm việc. Nhưng bằng cách nào đó tôi không thích sự sollution này khiến cho cái nhìn phức tạp hơn.
Câu hỏi của tôi với bạn: Có phương pháp nào khác để triển khai một cái gì đó như thế này không? Hoặc bất kỳ lời khuyên nào để có thể tối ưu hóa sự sollution hiện tại của tôi?
Cảm ơn!
Cảm ơn bạn đã đề xuất. Điều này có nghĩa là tôi luôn luôn cần đặt thuộc tính trong chế độ xem trong chế độ xem không? Vì tôi có nhiều giá tôi muốn hiển thị trong một chế độ xem nhưng không phải tất cả giá đều hiển thị ký hiệu tiền tệ. Khi tôi bắt đầu đọc về các mẫu hiển thị, tôi nghĩ rằng chúng sẽ làm cho mọi thứ trở nên dễ dàng hơn và sạch hơn, nhưng có vẻ như chúng đã lừa tôi: ( – ThdK
Bạn cũng có thể đặt 'ViewData' trong' bộ điều khiển' là – haim770
Vâng, tôi biết rồi sẽ có cùng giá trị cho mỗi loại tiền tệ tôi muốn định dạng trên chế độ xem hiện tại.Tôi có một mô hình chế độ xem biểu thị một dòng trong giỏ. Một trong các thuộc tính là giá thập phân. Đối với hầu hết các dòng tôi không muốn ký hiệu tiền tệ, tổng số và tổng số dòng, tôi muốn hiển thị các ký hiệu tiền tệ.Tuy nhiên, cả hai dòng sử dụng cùng một đối tượng (viewmodel) để lưu trữ các giá trị của họ – ThdK