1

如何强制 Null 表单元素为零我有以下模型类:-

 public partial class MemoryInfo
    {
        public long WORKSTATIONID { get; set; }
        public Nullable<long> TOTALMEMORY { get; set; }
        public Nullable<long> FREEMEMORY { get; set; }
        public Nullable<long> VIRTUALMEMORY { get; set; }
        public Nullable<long> FREEVIRTUALMEMORY { get; set; }

        public virtual SystemInfo SystemInfo { get; set; }
    }

目前我正在使用模型类来构建 API 调用,如下所示:-

query["ramSize"] = Request.Form["SystemInfo.MemoryInfo.TOTALMEMORY"];
query["virtualCapacity"] = Request.Form["SystemInfo.MemoryInfo.VIRTUALMEMORY"];
query["proSpeed"] = Request.Form["SPEED"];

string apiurl = System.Web.Configuration.WebConfigurationManager.AppSettings["ApiURL"];
var url = new UriBuilder(apiurl);

但目前如果用户将 ramSize 字段留空,它将作为 Null 值发送,API 将忽略这些值,而我需要以下场景;如果 ramSize 字段为空,则提交零值。

谁能告诉我我怎么能这样做?谢谢

4

1 回答 1

1

转换 Null

你可以用?? 运算符。它基本上评估前面的语句,如果它为空,则使用后续值。

query["ramSize"] = Request.Form["SystemInfo.MemoryInfo.TOTALMEMORY"] ?? 0;

MSDN

这 ??运算符称为空值合并运算符,用于为可空值类型或引用类型定义默认值。如果操作数不为空,则返回左侧操作数;否则返回正确的操作数。

只是一个注释,我认为Request.Form[""]返回 astring所以你可能必须0用引号引起来。

转换 String.Empty

看来您实际上是在问一个不同的问题,并且您想将String.Emptyor转换""为 0。您可以使用三级运算符 ? 在这种情况下:

string ramSize = Request.Form["SystemInfo.MemoryInfo.TOTALMEMORY"];
query["ramSize"] = String.IsNullOrEmpty(ramSize) ? "0" : ramSize;

MSDN

如果条件为真,则计算第一个表达式并成为结果;如果为 false,则计算第二个表达式并成为结果。只有两个表达式之一被评估。

于 2013-10-24T11:00:07.533 回答