html 帮助器方法检查 ViewDataDictionary 的值。该值可以作为属性在字典中或模型中。为了提取值,名为 ViewDataEvaluator 的内部密封类使用 PropertyDescriptor 来获取值。然后,调用 Convert.ToString() 将返回的对象转换为字符串。
控制器操作中的所需代码
控制器操作应该只填充模型,而不是格式化它(格式化模型是全局的)。
视图中的所需代码
视图可以渲染一个 HTML 文本框并使用这行代码提取属性的字符串表示形式:
<%=Html.TextBox(“日期”) %> <%=Html.TextBox(“时间”) %> <%=Html.TextBox(“单价”) %>
将模型的属性绑定到 HtmlHelper.TextBox()
对于文本框的值,模型实例中的 UnitPrice 属性值将转换为字符串。我需要通过自己转换为字符串来覆盖此行为,该字符串是按属性而不是按类型的。例如,对于 UnitPrice ,我需要一个小数的不同字符串表示形式,而对于 UnitQuantity ,我需要另一个小数点的字符串表示形式。
例如,我需要根据市场来格式化 UnitPrice 的小数精度。
string decimalPlaces = ViewData.Model.Precision.ToString (); <%=Html.TextBox(“UnitPrice”, ViewData.Model.TypeName.UnitPrice.ToString("N" + decimalPlaces)) %>
2路数据绑定请
就像 IModelBinder 是模型的每个属性的解析一样,我需要每个属性的格式,有点像 Windows 窗体绑定,但基于模型而不是控件。这将使模型能够往返并具有正确的格式。我更喜欢可以覆盖默认格式的设计。此外,我的模型在一个单独的程序集中,因此指定格式化程序的属性属性不是一个选项。
请注意,我需要模型的属性特定格式,而不是类型特定格式。