如何让MVC模型绑定器返回空字符串而不是null与剃刀编辑器模板
本文关键字:null 剃刀 编辑器 字符串 MVC 模型 绑定 返回 | 更新日期: 2023-09-27 18:13:29
我有一个名为String的编辑器模板,它具有以下html:
<input type="text" name="@ViewData.ModelMetadata.PropertyName"
value="@(Model != null ? Model : string.empty)" style="width: 200px" />
由于某种原因,如果我留下未填充的文本框,当我发回时,视图模型上的数据类型String的属性为空。我设置这个编辑器模板的方式,不应该这些值是空字符串代替?我很好奇为什么这不起作用。
我认为我唯一的其他选择是创建我自己的自定义模型绑定器,它将自动将我所有的空值转换为字符串。
任何建议吗?
我设置这个编辑器模板的方式,不应该这些值是空字符串代替?
不。
我很好奇为什么这不起作用。
HTTP协议不知道String.Empty
和null
之间的区别(它与语言无关,即Perl, PHP, Java, Phyton会做什么?)。所有值都作为字符串传递,因此没有null的概念。默认的ModelBinder只是返回null,因为它比String.Empty
更实用(也就是说,在参数的上下文中,null通常表示没有传递值)。
如何让MVC模型绑定器返回空字符串而不是null与剃刀编辑器模板?
对于剃须刀编辑器来说是不可能的。记住HTTP是不可知论的,所以你有很多选择;自定义ModelBinder,通过Javascript/jQuery输入检测指定值的隐藏字段,在验证期间修改值(IValidateObject)等