protected virtual string GenerateValue(string expression, object value, string format, bool useViewData) { var fullName = DefaultHtmlGenerator.GetFullHtmlFieldName(ViewContext, expression); var attemptedValue = (string)DefaultHtmlGenerator.GetModelStateValue(ViewContext, fullName, typeof(string)); string resolvedValue; if (attemptedValue != null) { // case 1: if ModelState has a value then it's already formatted so ignore format string resolvedValue = attemptedValue; } else if (useViewData) { // case 2: format the value from ViewData resolvedValue = DefaultHtmlGenerator.EvalString(ViewContext, expression, format); } else { // case 3: format the explicit value from ModelMetadata resolvedValue = FormatValue(value, format); } return(resolvedValue); }
protected virtual string GenerateValue(string name, object value, string format, bool useViewData) { var fullName = DefaultHtmlGenerator.GetFullHtmlFieldName(ViewContext, name); var attemptedValue = (string)DefaultHtmlGenerator.GetModelStateValue(ViewContext, fullName, typeof(string)); string resolvedValue; if (attemptedValue != null) { // case 1: if ModelState has a value then it's already formatted so ignore format string resolvedValue = attemptedValue; } else if (useViewData) { if (string.IsNullOrEmpty(name)) { // case 2(a): format the value from ModelMetadata for the current model var metadata = ViewData.ModelMetadata; resolvedValue = FormatValue(metadata.Model, format); } else { // case 2(b): format the value from ViewData resolvedValue = DefaultHtmlGenerator.EvalString(ViewContext, name, format); } } else { // case 3: format the explicit value from ModelMetadata resolvedValue = FormatValue(value, format); } return(resolvedValue); }