[英].NET MVC: how to get the model binder to assign null to a list property?
[英]how to get MVC model binder to return empty string instead of null with razor editor template?
我有一个名为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,Phyton会做什么?)。 所有值都作为字符串传递,因此没有null的概念。 默认的ModelBinder仅返回null,因为它比String.Empty
更为实用(也就是说,在参数上下文中,null通常表示不传递任何值)。
如何使用剃刀编辑器模板使MVC模型绑定程序返回空字符串而不是null?
就剃刀编辑器而言,这是不可能的。 请记住,HTTP是不可知论的,因此您有很多选择。 自定义ModelBinder,通过Javascript / jQuery输入检测指定值的隐藏字段,在验证过程中修改值(IValidateObject)等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.