Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用razor编辑器模板让MVC模型绑定器返回空字符串而不是null?_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 如何使用razor编辑器模板让MVC模型绑定器返回空字符串而不是null?

C# 如何使用razor编辑器模板让MVC模型绑定器返回空字符串而不是null?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一个名为String的编辑器模板,它具有以下html: <input type="text" name="@ViewData.ModelMetadata.PropertyName" value="@(Model != null ? Model : string.empty)" style="width: 200px" /> 由于某些原因,如果我不填充文本框,则在回发时,视图模型上数据类型字符串的属性为空。按照我设置编辑器模板的方式,这些值不应该是空字符串吗?我很好

我有一个名为String的编辑器模板,它具有以下html:

<input type="text" name="@ViewData.ModelMetadata.PropertyName" 
    value="@(Model != null ? Model : string.empty)" style="width: 200px" />

由于某些原因,如果我不填充文本框,则在回发时,视图模型上数据类型字符串的属性为空。按照我设置编辑器模板的方式,这些值不应该是空字符串吗?我很好奇为什么这不起作用

我认为我唯一的另一个选择是创建我自己的自定义模型绑定器,它将自动将我的所有空值转换为数据类型“string”的string.empty

有什么建议吗

按照我设置编辑器模板的方式,这些值不应该是空字符串吗

没有

我很好奇为什么这不起作用

HTTP协议不知道
String.Empty
null
之间的区别(它与语言无关,即Perl、PHP、Java和Phyton会做什么?)。所有值都作为字符串传递,因此不存在null的概念。默认ModelBinder只返回null,因为它比String.Empty更实用(也就是说,null通常表示参数上下文中没有传递值)

如何使用razor编辑器模板让MVC模型绑定器返回空字符串而不是null


就剃刀编辑而言,这是不可能的。记住HTTP是不可知的,所以你有很多选择;自定义ModelBinder、通过Javascript/jQuery输入检测指定值的隐藏字段、在验证期间修改值(IValidateObject)等。

很有意义。我想我会走定制模型装订路线。谢谢