0

inquiry.aspxページで 1 つの URL を渡すと、その URL がユーザーの電子メール アドレスにメッセージを送信するアプリケーションを開発しています。

その URL は次のようになります。

mail.Body += string.Format("<a href=\"http://www.abc.co.in/Download.aspx?period="
                   + DateTime.Now.ToString("dd-MM-yyyy hh mm")
                   + "&ProductName=" + productName + "\">Demo Download</a>");

これをページの pageload イベントに取得していdownload.aspxます。私のコードは次のとおりです。

string PName = Request.QueryString["ProductName"] as string;
string myDate = Request.QueryString["period"] as string;

DateTime dt1 = Convert.ToDateTime(myDate);
DateTime dt2 = DateTime.Now;
int day1, day2;
day1 = dt1.Day;
day2 = dt2.Day;
TimeSpan variable = dt2 - dt1;
if (day1!=day2)
{
    //Response.Write("Download time is expired now");
    lblmsg.Visible = true;
    lblmsg.Text = "Download time is expired now";
}
else
{
    lblmsg.Visible = true;
    lblmsg.Text = "U can Still Download";
}

エラーが発生します:

文字列は有効な DateTime として認識されませんでした

ユーザーがメール ID からそのリンクをクリックした後の出力 URL は次のようになります。

http://www.abc.co.in/Download.aspx?period=11-04-2013%2006%2036&ProductName=Otja

ここで datetime は、同日以降にメールが今日ユーザーに送信され、今日のみダウンロードできることを意味する条件に使用されます。明日以降、現在ソフトウェアをダウンロードできないというメッセージが表示されます。それがURLに日時を渡す理由ですが、エラーが発生しています。誰かが私を助けてください。それはひどく必要です。

4

2 に答える 2

0

あなたが試すことができるいくつかのこと。

何よりもまず、日付形式を地域ではなくユニバーサル日付形式に変更します。.net Web アプリケーションを使用していると仮定すると、クライアントの実行がサーバーによって異なるという問題が発生しました。

yyyy-MM-dd 

次に、日時の書式文字列が正しくありません。つまり、時と分の間にコロンがありません。また、上記の形式を試す場合は、TT または 24 時間を指定する必要があります。あなたのフォーマットは次のようになります

yyyy-MM-dd hh:mm tt

また

yyyy-MM-dd HH:mm 

上記に加えて、 date -compare を使用することもできます

DateTime dt1 = Convert.ToDateTime(myDate).Date;
DateTime dt2 = DateTime.Now.Date;
if(dt1 != dt2)
{
//...
}
else
{
//...
}
于 2013-04-11T13:33:07.923 に答える
0

URL の作成時に を使用DateTime.ToString("dd-MM-yyyy hh mm")しているため、解析時には同じフォーマット文字列を使用する必要があります。

DateTime dt1 = DateTime.ParseExact(myDate, "dd-MM-yyyy hh mm", System.Globalization.CultureInfo.InvariantCulture);

ベスト プラクティスでは、URL を作成するときにカルチャも渡す必要があります: DateTime.ToString("dd-MM-yyyy hh mm", CultureInfo.InvariantCulture)

ところで、コード サンプルの URL に日付を渡すべきではありません。代わりに、日付をトークンと一緒にデータベースに保存し、代わりにそのトークンを渡します。または、日付を暗号化することもできます。問題は、受信者が日付を変更できるため、ダウンロード可能かどうかの確認が無効になることです。

于 2013-04-11T15:03:11.490 に答える