如何强制将长 Request.Form 提交为零,而不是 Null

本文关键字:Null 提交 何强制 Request Form | 更新日期: 2023-09-27 18:36:46

如何强制 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 字段为空以提交零值。

谁能潜水我怎么做?谢谢

如何强制将长 Request.Form 提交为零,而不是 Null

转换空

您可以使用 ??运算符。它基本上计算前面的语句,如果为 null,则使用前面的值。

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

MSDN

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

请注意,我认为Request.Form[""]返回一个string,因此您可能必须0括在引号中。

转换字符串.空

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

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

MSDN

如果条件为 true,则计算第一个表达式并变为 结果;如果为 false,则计算第二个表达式并变为 结果。只能计算两个表达式中的一个。