接收“空”而不是空

时间:2019-10-16 10:17:20

标签: c# asp.net

我正在尝试将null参数传递给Web api控制器,但我得到的是“ null”而不是null。

例如:我的路线应该是这样

[Route("api/student/GetStudent/{studentId}/{studentFname}/{studentLname}/")]

public Student GetStudent(int studentId,string studentFname,string studentLname) 
{
         //Code 
}
  

请注意,至少用户应输入名字或姓氏,然后   不需要都拥有

  • 在上面的代码中,名字和姓氏都是必需的,但我不希望这样。所以我将代码更改为

    [Route("api/student/GetStudent/{studentId}/{studentFname?}/{studentLname?}/")]
    
    public Student GetStudent(int studentId,string studentFname,string studentLname) 
    {
             //Code 
    }
    

正如我所说,当我调用此方法并为学生的firstname传递一个null参数时。我得到的是“空”,当它传递给数据库存储过程时,它将作为一个值传递。

2 个答案:

答案 0 :(得分:1)

这很可能是因为该方法被称为

api/student/GetStudent/xxx/null/something

在这种情况下提供

null,实际上为“ null”。

您可能需要公开

  • api / student / GetStudentByLastName / {lname}
  • api / student / GetStudentByFirstName / {fname}
  • api / student / GetStudentById / {id}

根据您的设置,您也许可以做到

  • api/student/GetStudent/IdHere?fname=xxx(名称为null
  • api/student/GetStudent/IdHere?lname=xxx(fname将为null

(顺便说一句。如果需要id,我不确定为什么要传递名称部分)

答案 1 :(得分:0)

我想您应该使用以下格式调用您的API:

api / student / GetStudent / studentId =&studentFname =&studentLname =