Как учесть, что аргумент моего метода является `null` вместо` int` - PullRequest
1 голос
/ 02 мая 2019

Мне нужно знать, как объяснить, что мой метод является null вместо int.

У меня есть этот метод, который должен получить int

    [HttpGet]
    public ActionResult UpdateUser(int userId){ }

Однако, когда время сеанса истекает, и я снова вхожу в систему во время вызова этого метода, он получает null вместо int.

Это вызывает эту ошибку:

Словарь параметров содержит пустую запись для параметра 'userId' не обнуляемого типа 'System.Int32' для метода System.Web.Mvc.ActionResult UpdateUser (Int32) в 'Controllers.UserController. Необязательный параметр должен быть ссылочный тип, обнуляемый тип или объявленный как необязательный параметр. Имя параметра: параметры

Мне нужен способ учета получения аргумента null.

До сих пор я пытался перегрузить метод с помощью типа int, допускающего обнуление, как этот

    [HttpGet]
    public ActionResult UpdateUser(int? userId){ }

, но это просто приводит к получению каждого вызова UpdateUser () и преобразованию значения в null.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 02 мая 2019

Сигнатура для перегрузки, которая не будет предоставлена ​​для userId, вероятно:

[HttpGet]
public ActionResult UpdateUser(){ }

, т. Е. Не был указан userId, вместо того, чтобы ему было предоставлено значение null.

Я говорю «вероятно», поскольку вполне возможно, что ваш запрос на самом деле имеет параметр / аргумент, указанный без значения.

Если это так, вам, вероятно, следует использовать только одну сигнатуру:

[HttpGet]
public ActionResult UpdateUser(int? userId){ }

С чеком ...

if (userId.HasValue)
{
    // ok... you can use userId.Value
}
else
{
    // not ok...
}
0 голосов
/ 02 мая 2019

Не могли бы вы просто использовать подпись

[HttpPost]
public ActionResult UpdateUser(int? userId = 0){ }

Это должно проверить, чтобы видеть, является ли оно нулевым, и если это так, установите его в 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...