Benim modelimin bir özelliği çift tipi olan bir özelliği var. Öğelerimden biri 0.000028 değerine sahiptir, ancak düzenleme görünümüm oluşturulduğunda, bu değerin düzenleyicisi 2,8e-005 olarak gösterilir. Benim kullanıcılara kafa karıştırıcı olmaktan bundan KenaraMVC3 Editör Çift gösterme bilimsel gösterim için
, aynı zamanda
[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; }
benim düzenli ifade doğrulama nasıl bu alan görüntülemek için alabilirim başarısız? İstediğim gibi bir ondalık oluşturacak olan bu kodu (aşağıda gösterildi) aldım, ama nerede uygulayacağımı bilmiyorum.
var dbltest = 0.000028D;
Console.WriteLine(String.Format("{0:F20}", dbltest).TrimEnd('0'));
NeckDimension özelliğini iki yerde kullanıyorum ve görünümü ve görünüm görünümünü düzenlerim. İşte her biri nasıl işleniyor.
@Html.TextBoxFor(model => model.NeckDimension, new { style = "width:75px;" })
@Html.DisplayFor(model => model.NeckHDimension)
GÜNCELLEME Görünüşe DisplayFormat TextBoxFor ile çalışmaz. @ Html.TextBoxFor'umu bir Html.EditorFor'a değiştirmeyi ve bir sınıf vermeyi denedim ancak aşağıdaki istisnada başarısız oldu.
The model item passed into the dictionary is of type 'System.Double', but this dictionary requires a model item of type 'System.String'
Bu eski kod hala çalışır:
@Html.EditorFor(model => model.NeckDimension, new {@class = "formatteddecimal"})
Benim seçenekleri javascript ile bu düzeltmek veya bir editör şablonu ile düzeltmek vardır benziyor:
@Html.TextBoxFor(model => model.NeckDimension, new { style = "width:75px;" })
Bu kod istisna verdi ama bu noktada 2. seçeneği araştırmak ve öğrenmek için zamanım yok.
ÇÖZÜM:
Çift için bir editör şablonu yarattı? aşağıdaki gibi.
@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" />
}
@Darin Dimitrov'un DisplayFormat dekoratörünü kullanma yaklaşımını beğeniyorum, fakat benim durumumda çalışmıyor. Diğer dekoratörlerden birinin bunu atıp atmadığından emin değilim, ama hala işe yarayan bir çözüme ihtiyacım var. –