मुझे अपने मॉडल की एक संपत्ति मिली है जो कि डबल टाइप है। मेरे आइटमों में से एक का मूल्य 0.000028 है, लेकिन जब मेरा संपादन दृश्य प्रस्तुत किया जाता है, तो इस मान के संपादक 2.8e-005 के रूप में दिखाए जाते हैं।एमवीसी 3 संपादक डबल नोटिंग वैज्ञानिक नोटेशन
यह मेरा उपयोगकर्ताओं के लिए भ्रामक होने सेएक तरफ, यह भी विफल रहता है
[Display(Name = "Neck Dimension")]
[RegularExpression(@"[0-9]*\.?[0-9]+", ErrorMessage = "Neck Dimension must be a Number")]
[Range(0, 9999.99, ErrorMessage = "Value must be between 0 - 9,999.99")]
[Required(ErrorMessage = "The Neck Dimension is required.")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:F20}")]
public double? NeckDimension { get; set; }
की मेरी नियमित अभिव्यक्ति मान्यता कैसे मैं इस क्षेत्र को प्रदर्शित करने के लिए मिलता है? मुझे यह कोड मिला है (नीचे दिखाया गया है) जो एक दशमलव प्रदान करेगा जैसा मैं चाहता हूं, लेकिन मुझे यकीन नहीं है कि इसे कहां कार्यान्वित किया जाए।
var dbltest = 0.000028D;
Console.WriteLine(String.Format("{0:F20}", dbltest).TrimEnd('0'));
मैं दो स्थानों पर संपत्ति नेकडिमेन्शन का उपयोग करता हूं, और दृश्य और प्रदर्शन दृश्य संपादित करता हूं। यहां बताया गया है कि प्रत्येक को कैसे प्रस्तुत किया जा रहा है।
@Html.TextBoxFor(model => model.NeckDimension, new { style = "width:75px;" })
@Html.DisplayFor(model => model.NeckHDimension)
अद्यतन जाहिर DisplayFormat TextBoxFor साथ काम नहीं करेंगे। मैंने अपने @ Html.TextBox को एक HTML.EditorFor में बदलने और इसे एक कक्षा देने का प्रयास किया लेकिन यह निम्नलिखित अपवाद के साथ विफल रहा।
The model item passed into the dictionary is of type 'System.Double', but this dictionary requires a model item of type 'System.String'
इस पुराने कोड अभी भी काम करता है:
@Html.EditorFor(model => model.NeckDimension, new {@class = "formatteddecimal"})
ऐसा लगता है कि मेरे विकल्प जावास्क्रिप्ट के साथ इस को ठीक करने या एक संपादक टेम्पलेट के साथ इसे ठीक कर रहे हैं:
@Html.TextBoxFor(model => model.NeckDimension, new { style = "width:75px;" })
इस कोड को अपवाद दिया , लेकिन मेरे पास इस समय दूसरे विकल्प को खोजने और सीखने का समय नहीं है।
समाधान:
मैं डबल के लिए एक संपादक खाका बनाया? निम्नलिखित नुसार।
@model double?
@{
var ti = ViewData.TemplateInfo;
var displayValue = string.Empty;
if (Model.HasValue) {
displayValue = String.Format("{0:F20}", @Model.Value).TrimEnd('0');
}
<input id="@ti.GetFullHtmlFieldId(string.Empty)" name="@ti.GetFullHtmlFieldName(string.Empty)" type="text" value="@displayValue" />
}
मुझे डिस्प्लेफॉर्मेट सजावट का उपयोग करने के लिए @ डारिन डिमिट्रोव के दृष्टिकोण पसंद हैं, लेकिन यह मेरे मामले में काम नहीं करता है। मुझे यकीन नहीं है कि अगर अन्य सजावट में से एक इसे फेंक रहा है, लेकिन मुझे अभी भी एक समाधान की आवश्यकता है जो काम करता है। –