
How do you override the string representation the HTML helper methods use for a model’s properties?html帮助器方法检查ViewDataDictionary中的值。该值可以在字典中或在模型中作为属性。要提取值,一个名为ViewDataEvaluator的内部密封类使用PropertyDescriptor来获取值。然后,调用Convert.ToString()将返回的对象转换为字符串。 控制器动作中的所需代码 控制器操作应仅填充模型,而不是对其进行格式化(格式化模型是全局的)。 View中所需的代码 该视图可以呈现HTML文本框,并使用以下代码行提取属性的字符串表示形式:
将模型的属性绑定到HtmlHelper.TextBox() 对于文本框的值,模型实例中的UnitPrice属性的值将转换为字符串。我需要通过自己转换为字符串来覆盖此行为,该字符串是针对每个属性的,而不是针对每种类型的。例如,对于UnitPrice,我需要使用不同的字符串表示形式,对于UnitQuantity,我需要使用另一种字符串表示形式的十进制形式。 例如,我需要根据市场格式化单价的小数精度。
请进行2路数据绑定 就像IModelBinder是模型的每个属性的解析一样,我需要为每个属性设置一个Format,有点像Windows Forms绑定,但是基于模型而不是控件。这将使模型能够往返并具有正确的格式。我希望可以覆盖默认格式的设计。另外,我的模型在单独的程序集中,因此指定格式化程序的属性不是选项。 请注意,我需要模型的属性特定格式,而不是类型特定格式。 无法使用助手自己来指定格式。您采用的方法将起作用。另一种方法是将预先格式化的值添加到 编辑:您确定要用货币格式化文本输入吗?例如,您将在输入中看到的是:
当您将其发布回服务器时,我们将无法理解。相反,我将货币符号放在文本输入之外。例如:
我敢肯定有一种简便的方法可以渲染" $ "而无需对其进行硬编码,因此它可以本地化,但是我不知道它是副产品。 再次编辑
|