繁体   English   中英

如何使用剃刀编辑器模板使MVC模型绑定程序返回空字符串而不是null?

[英]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.Emptynull之间的区别一无所知(它与语言无关,即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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM