HTML助手方法检查viewDataDictionary中的值。值可以在字典中,也可以在模型中,作为属性。要提取该值,名为ViewDataEvaluator的内部密封类使用PropertyDescriptor获取该值。然后,调用convert.toString()将返回的对象转换为字符串。
控制器动作所需代码
控制器操作应该只填充模型,而不是格式化它(格式化模型是全局的)。
视图中的所需代码
视图可以呈现HTML文本框,并使用以下代码行提取属性的字符串表示形式:
<%=Html.TextBox(âDateâ) %>
<%=Html.TextBox(âTimeâ) %>
<%=Html.TextBox(âUnitPriceâ) %>
将模型的属性绑定到htmlhelper.textbox()。
对于textbox_s值,来自模型实例的UnitPrice属性_s值将转换为字符串。我需要用自己的字符串转换来覆盖这个行为,字符串是按属性“而不是按类型”。例如,我需要一个不同的字符串表示
十进制的
对于UnitPrice和另一个字符串表示
十进制的
对于UnitQuantity。
例如,我需要根据市场来格式化单价的小数精度。
string decimalPlaces = ViewData.Model.Precision.ToString ();
<%=Html.TextBox(âUnitPriceâ, ViewData.Model.TypeName.UnitPrice.ToString("N" + decimalPlaces)) %>
双向数据绑定
就像iModelBinder一样
解析
对于模型的每个属性,我需要
格式
对于每个属性,有点像Windows窗体
binding
,但基于模型而不是控件。这将使模型能够往返并具有适当的格式。我更喜欢可以覆盖默认格式的设计。此外,我的模型位于单独的程序集中,因此指定格式化程序的属性化属性不是一个选项。
请注意我需要
特定属性
模型的格式,而不是
特定类型
格式化。