Tôi hy vọng điều này khá đơn giản, mặc dù sau rất nhiều Googling, tôi đã không thể làm việc được.Trong MVC 3, tôi không thể nhận được @ Html.DisplayFor để hiển thị một chuỗi được định dạng
Tôi đang làm việc trên trang web giỏ hàng với MVC 3 và sử dụng Khuôn khổ thực thể mã đầu tiên. Mô hình tôi gửi qua là danh sách các đối tượng Product, và mỗi người trong số các đối tượng bao gồm khách sạn này:
[Required(ErrorMessage = "This is a required field.")]
[DataType(DataType.Currency)]
[Range(1.00, 500.00, ErrorMessage = "Products can not be free.")]
[DisplayFormat(DataFormatString = "{0:C}")]
[DisplayName("Price")]
public double Price { get; set; }
Tôi đã hy vọng rằng thuộc tính DisplayFormat sẽ gây ra dòng sau trong giao diện để định dạng giá trị như một loại tiền tệ (mục là đối tượng sản phẩm trong vòng lặp):
@Html.DisplayFor(modelItem => item.Price)
Nhưng điều này không áp dụng định dạng nào cả. Cho đến nay, cách duy nhất tôi có thể làm cho nó hoạt động là sử dụng thay thế này:
@String.Format("{0:C}", item.Price)
Nhưng nếu có thể, tôi muốn sử dụng @ Html.DisplayFor vì nó được thiết kế để xử lý những thứ như null . Tôi biết nó sẽ là 0 hoặc nhiều hơn. Trong thực tế với việc xác nhận nó sẽ luôn luôn là một số tiền - nhưng tôi muốn chắc chắn rằng không có một cách chính xác hơn để làm điều này trước khi tôi tiếp tục.
Mọi thông tin về điều này sẽ được đánh giá cao nhất!
CẬP NHẬT
Darin đã trả lời và chỉ ra rằng nó không làm việc, khiến tôi đi trở lại hơn những gì tôi đã thực sự gửi sang chế độ xem. Tôi nhận ra rằng mặc dù tôi có một lớp gọi là ProductModel, trong đó có thuộc tính DisplayFormat, tôi đã thực sự trả về một mô hình khác có chứa một danh sách các sản phẩm. Điều này được gọi là ProductListModel và tôi nhận ra rằng nó trả về một danh sách các lớp dữ liệu sản phẩm - không phải lớp ProductModel!
Vì vậy, cuối cùng nó thực sự rất đơn giản. Chỉ ước gì tôi đã không lãng phí nửa đêm vào nó. Cảm ơn vì đã truyền cảm hứng cho tôi để quay lại và kiểm tra đúng, Darin!
Bạn nói đúng Darin. Đó là vào cuối ngày và tôi đã mắc sai lầm ngu ngốc khi nghĩ rằng tôi đang hiển thị một điều khi thực sự tôi đang trưng bày một thứ khác! Tôi sẽ cập nhật bài đăng của mình. Cảm ơn bạn đã chứng minh rằng nó hoạt động! –
chỉ '[DataType (DataType.Currency)]' là đủ. bạn thậm chí không cần DisplayFormat –