DisplayFormat para TextBoxFor en MVC
Necesito redondear de 4 dígitos decimales a 2 dígitos y mostrar en MVC 3 UI
Algo como esto 58.8964 a 58.90
Intentado siguiendo esto¿Cómo debo usar EditorFor () en MVC para una moneda / tipo de dinero? pero no funciona
Como estoy usando TextBoxFor => quité ApplyFormatInEditMode aquí. Incluso lo intenté con ApplyFormatInEditMode, pero nada funciona. Todavía me muestra 58.8964.
MyModelClass
[DisplayFormat(DataFormatString = "{0:F2}")]
public decimal? TotalAmount { get; set; }
@Html.TextBoxFor(m=>m.TotalAmount)
¿Cómo puedo lograr esta ronda?
No puedo usar EditorFor (m => m.TotalAmount) aquí, ya que necesito pasar algunos atributos html
Editar:
Después de depurar con el código fuente MVC, usan internamente
string valueParameter = Convert.ToString(value, CultureInfo.CurrentCulture);
en MvcHtmlString InputHelper () método de InputExtension.cs que tomavalor del objeto Como parámetro y conversión. No están utilizando ningún formato de visualización allí. ¿Cómo podríamos arreglarlo?
Me las arreglé para arreglar de esta manera. Como tengo un ayudante personalizado, puedo administrar con el siguiente código
if (!string.IsNullOrEmpty(modelMetaData.DisplayFormatString))
{
string formatString = modelMetaData.DisplayFormatString;
string formattedValue = String.Format(CultureInfo.CurrentCulture, formatString, modelMetaData.Model);
string name = ExpressionHelper.GetExpressionText(expression);
string fullName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(name);
return htmlHelper.TextBox(fullName, formattedValue, htmlAttributes);
}
else
{
return htmlHelper.TextBoxFor(expression, htmlAttributes);
}