空格在razor视图c#中转换为null

本文关键字:转换 null razor 视图 空格 | 更新日期: 2023-09-27 18:13:31

我有一个具有string类型属性的模型。我将这个模型绑定到视图(剃刀视图),并将这个属性绑定到隐藏字段。该属性的值为blank (String.Empty)。

当我发布模型到控制器时,我得到的值是null而不是空白。

任何想法?

空格在razor视图c#中转换为null

添加[DisplayFormat(ConvertEmptyStringToNull = false)]到你的类标记

如果您试图在往返操作中将空值保留为空值,将空字符串保留为空字符串,也许您可以定义一个特殊的常量字符串值来表示null。也许在静态类中有这样的内容(这样您就可以对它进行扩展):

private const string NULL_STRING = "__@NULL@__";
public static string StringifyIfNull(this string s) {
  return s == null ? NULL_STRING : s;
}
public static string DestringifyIfNull(this string s) {
  return NULL_STRING == s ? null : s;
}

因此,在模型上设置隐藏字符串属性时,使用hiddenString.StringifyIfNull(),并且在POST后读取隐藏值时,使用model.HiddenString.DestringifyIfNull()

这就是MVC框架在将请求数据映射到控制器参数时所做的,并且请求数据是空值。如果您检查Request.Form集合中的值,您将看到它实际上是一个空字符串,而不是空值。

您可以处理框架生成的空值,或者从Request.Form集合中读取数据。

这个链接应该有帮助。

为什么我从剃刀视图接收POST请求时得到null而不是空字符串?

"默认模型绑定将为您创建一个新的SomeModel。字符串类型的默认值是null,因为它是引用类型,所以它被设置为null。"作者:statichippo