【问题标题】:Why does an empty string come to the controller instead of null?为什么一个空字符串而不是空字符串来到控制器?
【发布时间】:2023-02-15 18:51:57
【问题描述】:

有以下控制器:

public JsonResult Report(string tt = null)
{
//some code
}

和ajax请求

$.ajax({
            type: "POST",
            url: '@Url.Action(nameof(ManageController.Report))',
            data: {
                        "tt": $('#ServiceFilter').val(),
            },
            success: function () { }
            })

本例中的 ServiceFilter 有一个空值,但是一个空字符串传到控制器,为什么?

【问题讨论】:

  • 你真的确认过这个价值吗?如果你这样做console.log('#ServiceFilter value: ' + $('#ServiceFilter').val())它会打印什么?
  • @GuyIncognito 输出空
  • 不,它没有。显示精确输出,如果在值之前打印字符串,它不能输出 null。

标签: c# asp.net-mvc asp.net-core


【解决方案1】:

因为 $('#ServiceFilter').val() 在 JavaScript 中没有空值。 如果您运行您的应用程序并打开控制台(F12 或检查),并且您使用此命令:$('#ServiceFilter').val() 你会看到两件事之一。 或者 $('#ServiceFilter') 不存在,并且具有“未定义”值,或者它存在并且具有 '' 值 (String.empty)。 在您的控制器中,行 public JsonResult Report(string tt = null) 意味着如果该方法没有接收任何参数,它将把它设置为 null,但在这种情况下,接收的是一个空值

【讨论】:

  • 不,它会输出空值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 2014-06-27
相关资源
最近更新 更多