我有一个名为String的编辑器模板,该模板具有以下html:
<input type="text" name="@ViewData.ModelMetadata.PropertyName"
value="@(Model != null ? Model : string.empty)" style="width: 200px" />
由于某些原因,如果我保留未填充的文本框,则在发回时,视图模型上数据类型String的属性为null。我设置此编辑器模板的方式,这些值不应该是空字符串吗?我很好奇为什么这行不通。
我在想我唯一的替代方法是创建自己的自定义模型绑定程序,该绑定程序将自动将所有空值转换为数据类型“字符串”的string.empty。
有什么建议吗?
我设置此编辑器模板的方式,这些值不应该是空字符串吗?
没有。
我很好奇为什么这行不通。
HTTP协议一无所知的区别String.Empty
和null
(它的语言无关,即:会的Perl,PHP,Java和植酮呢?)。所有值都以字符串形式传递,因此没有null的概念。默认的ModelBinder只是返回null,因为它比那时更实用String.Empty
(也就是说,在参数的上下文中,null通常表示不传递任何值)。
如何使用剃刀编辑器模板使MVC模型绑定程序返回空字符串而不是null?
就剃刀编辑器而言,这是不可能的。请记住,HTTP是不可知论的,因此您有很多选择。自定义ModelBinder,通过Javascript / jQuery输入检测指定值的“隐藏”字段,在验证过程中修改值(IValidateObject)等。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句