Có cách nào để tải UpdateModel hoặc TryUpdateModel để phân tích một giá trị tiền hoặc tiền tệ được định dạng, chẳng hạn như $ 1,200.00 thành số thập phân mà không cần thổi khối không?TryUpdateModel với giá trị được định dạng tiền tệ?
Trả lời
Sử dụng chất kết dính mô hình tùy chỉnh.
Không đơn giản hay thanh lịch như tôi đã hy vọng, nhưng với một số tinh chỉnh nó thực sự làm việc, vì vậy cảm ơn bạn. Tôi sẽ đăng binder tinh chỉnh của tôi. –
Bạn có thể phân tích cú pháp giá trị lên trước khi gọi một trong các phương pháp này không? Nếu có, bạn có thể sử dụng phương pháp sau để làm như vậy
var provider = (NumberFormatInfo)CultureInfo.InvariantCulture.NumberFormat.Clone();
provider.CurrencySymbol = "$";
var x = decimal.Parse(
"$1,200",
NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands,
provider);
Điều này tôi nghĩ sẽ tuyệt vời như một người trợ giúp html – griegs
Việc phân tích cú pháp thường không phải là vấn đề, nhưng tôi có một số trường "tiền" và tôi không muốn phân tích các bộ điều khiển của mình phân tích xung quanh TryUpdateModel, nếu có thể . –
@cadmium sử dụng chất kết dính mô hình tùy chỉnh, xem liên kết trong câu trả lời của tôi. – eglasius
trả lời đã được trao cho Freddy Rios kể từ khi liên kết của mình cung cấp cho tôi với các cơ sở để làm điều này, nhưng mã cần một số sửa chữa lên:
// http://www.crydust.be/blog/2009/07/30/custom-model-binder-to-avoid-decimal-separator-problems/
public class MoneyParsableModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
object result = null;
// Added support for decimals and nullable types - c.
if (
bindingContext.ModelType == typeof(double)
|| bindingContext.ModelType == typeof(decimal)
|| bindingContext.ModelType == typeof(double?)
|| bindingContext.ModelType == typeof(decimal?)
)
{
string modelName = bindingContext.ModelName;
string attemptedValue = bindingContext.ValueProvider[modelName].AttemptedValue;
// Depending on cultureinfo the NumberDecimalSeparator can be "," or "."
// Both "." and "," should be accepted, but aren't.
string wantedSeperator = NumberFormatInfo.CurrentInfo.NumberDecimalSeparator;
string alternateSeperator = (wantedSeperator == "," ? "." : ",");
if (attemptedValue.IndexOf(wantedSeperator) == -1
&& attemptedValue.IndexOf(alternateSeperator) != -1)
{
attemptedValue = attemptedValue.Replace(alternateSeperator, wantedSeperator);
}
// If SetModelValue is not called it may result in a null-ref exception if the model is resused - c.
bindingContext.ModelState.SetModelValue(modelName, bindingContext.ValueProvider[modelName]);
try
{
// Added support for decimals and nullable types - c.
if (bindingContext.ModelType == typeof(double) || bindingContext.ModelType == typeof(double?))
{
result = double.Parse(attemptedValue, NumberStyles.Any);
}
else
{
result = decimal.Parse(attemptedValue, NumberStyles.Any);
}
}
catch (FormatException e)
{
bindingContext.ModelState.AddModelError(modelName, e);
}
}
else
{
result = base.BindModel(controllerContext, bindingContext);
}
return result;
}
}
Nó không phải là đẹp, nhưng nó công trinh.
- 1. Chuỗi tiền tệ định dạng
- 2. Định dạng tiền tệ MVC
- 3. HTML 5 Định dạng tiền tệ
- 4. Định dạng tiền tệ không có ký hiệu tiền tệ
- 5. Chuỗi định dạng tiền tệ trong asp.net
- 6. Kendo UI Định dạng tiền tệ
- 7. Định dạng tiền tệ để hiển thị
- 8. Định dạng tiền tệ Excel cơ bản với Apache POI
- 9. Cách định dạng int dưới dạng tiền tệ trong C#?
- 10. Đường ray - Định dạng số dưới dạng định dạng tiền tệ trong Getter
- 11. Lưu trữ các giá trị tiền tệ trong SQLite3
- 12. mysql chọn int là tiền tệ hoặc chuyển đổi int sang định dạng tiền tệ?
- 13. Java String.format với ký hiệu tiền tệ
- 14. Trích xuất đơn vị tiền tệ từ số tiền được định dạng
- 15. StringFormat in XAML, WPF: Định dạng tiền tệ
- 16. Trình bày các giá trị tiền tệ trong Java
- 17. Cách định dạng đơn vị tiền tệ bằng HTML5 với thymeleaf
- 18. Mã đơn vị tiền tệ để lập bản đồ ký hiệu tiền tệ
- 19. Định dạng số thập phân làm đơn vị tiền tệ dựa trên mã đơn vị tiền tệ
- 20. Cần định dạng tiền tệ tùy chỉnh để sử dụng với String.Format
- 21. Định dạng tiền tệ thích hợp khi không hiển thị đơn vị tiền tệ gốc của văn hóa
- 22. chuỗi sang định dạng tiền tệ, không có dấu chấm câu (hoặc dấu phẩy)
- 23. Cách lấy giá trị ô với định dạng được áp dụng (giá trị ô được định dạng) bằng OpenXML SDK
- 24. .NET: Phân tích tiền tệ được bản địa hóa
- 25. Làm thế nào tôi có thể định dạng bất động sản thập phân sang tiền tệ
- 26. vấn đề cố gắng để định dạng tiền tệ với Python (Django)
- 27. tay lái có chức năng định dạng tiền tệ với javascript
- 28. Đặt định dạng tiền tệ cho ô Excel được tạo bằng ExcelPackage
- 29. Mẫu Jinja - Định dạng phao là đơn vị tiền tệ được phân cách bằng dấu phẩy
- 30. Chuyển đổi tiền tệ
Tôi có xếp chồng ngăn xếp không? Nó không có vẻ như nó phải là khó khăn? –