asp.net c # лучший способ разобрать числа и дату и время из строки запроса, затем попытаться / поймать

2

есть ли лучший способ, чем try/catch для разбора чисел и datetimes без сбоев страницы?

если они не являются допустимыми числами /datetimes, они должны быть пустыми.

вот что я получил до сих пор:

long id = null;
try{
    id = Int64.Parse(Request.QueryString["id"]);
}catch(Exception e){}

DateTime time = null;
try{
    time = DateTime.Parse(Request.QueryString["time"]);
}catch(Exception e){}

код >

  • 0
    о, хорошо, я не могу поверить, что я пропустил TryParse ..... Я потянул всю ночь и сейчас довольно зонирован, спасибо!
Теги:

5 ответов

15
Лучший ответ
int tempInt = 0;
if(int.TryParse(Request["Id"], out tempInt))
    //it good!!

Аналогично, для даты "DateTime.TryParse"

изменить

Чтобы полностью имитировать ваш код, вы должны иметь следующее:

long? id = null; DateTime? time = null;
long tempLong; DateTime tempDate;

if(long.TryParse(Request["id"], out tempLong))
    id = tempLong;
if(DateTime.TryParse(Request["time"], out tempDate))
    time = tempDate;
3

Используйте TryParse вместо Parse.

TryParse не бросает и хорошо подходит для ситуаций, подобных этому, когда вход не обязательно доверен, и вы не хотите, чтобы возникло исключение.

1

Вы заметили TryParse?

long id = -1;
if(Int64.TryParse(Request.QueryString["id"] ?? "", out id))
   // is valid...
0

Вы можете использовать TryParse:

Int64.TryParse

DateTime.TryParse

0

Так я обычно делаю в своих проектах:

public long? ClientId
    {
        get
        {
            long? result = null;
            if (Request.QueryString[QueryStringConstants.ClientId] != null)
                result = Convert.ToInt64(Request.QueryString[QueryStringConstants.ClientId]);

            return result;
        }
    }


    public DateTime? ItemPurchasedDate
    {
        get
        {
            DateTime? result = null;
            if (Request.QueryString[QueryStringConstants.ItemPurchasedDate] != null)
                result = Convert.ToDateTime(Request.QueryString[QueryStringConstants.ItemPurchasedDate]);

            return result;
        }
    }

И я определил свой статический класс QueryStringConstants, как этот

public static class QueryStringConstants
{
 public static string ClientId = "clientId";
 public static string ItemPurchasedDate = "itemPurchasedDate";
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню