2

ユーザーが同じフォームに入力し続ける必要がないように、フォームに入力するために使用するCookieを設定しました(ホリデーヴィラの所有者に問い合わせを送信します)。

Cookieがすでに設定されている場合は正常に動作していますが、Cookieが設定されていない場合はエラーになります。

「if」ステートメントを使用する必要があると思いますが、コードの記述方法がよくわかりません。

これがCookieを設定するコードです...

Response.Cookies["BookingEnquiry"]["ReqName"] = Request["BookingReqName"];
Response.Cookies["BookingEnquiry"]["ReqEmail"] = Request["BookingReqEmail"];
Response.Cookies["BookingEnquiry"]["ReqPhone"] = Request["BookingReqPhone"];
Response.Cookies["BookingEnquiry"]["NumAdults"] = Request["BookingNumAdults"];
Response.Cookies["BookingEnquiry"]["NumChildren"] = Request["BookingNumChildren"];
Response.Cookies["BookingEnquiry"]["ReqMessage"] = Request["BookingReqMessage"];
Response.Cookies["BookingEnquiry"].Expires = DateTime.Now.AddHours(4); 
}

Cookieから情報を収集する変数は次のとおりです...

var reqname = Request.Cookies["BookingEnquiry"]["ReqName"];
var reqemail = Request.Cookies["BookingEnquiry"]["ReqEmail"];
var reqphone = Request.Cookies["BookingEnquiry"]["ReqPhone"];
var numadults = Request.Cookies["BookingEnquiry"]["NumAdults"];
var numchildren = Request.Cookies["BookingEnquiry"]["NumChildren"];
var reqmessage = Request.Cookies["BookingEnquiry"]["ReqMessage"];

フォームからの入力例を次に示します...

<label>Name</label>
<input type="text" name="BookingReqName" id="BookingReqName" placeholder="full name…" value="@reqname">
4

2 に答える 2

2

WebMatrix C#.netでは、次のようなものを探していると思います。

if(Request["BookingReqName"] != null)
{
    Response.Cookies["BookingEnquiry"]["ReqName"] = Request["BookingReqName"];
}
else
{
    Response.Cookies["BookingReqName"] = ""; //<--Whatever default value you want (I've used an empty string here, so you, at least, won't get a null reference error).
}

または、1つのライナーと同じコードを使用することもできます(コードが乱雑にならないようにするためですが、これにより読みやすさが低下します)。

if(Request["BookingReqName"] != null){Response.Cookies["BookingEnquiry"]["ReqName"] = Request["BookingReqName"];}else{Response.Cookies["BookingReqName"] = ""; //<--Whatever default value you want (I've used an empty string here, so you, at least, won't get a null reference error).}

Cookieの値を要求するすべての行に対してこれを行う必要があります。

ただし、重要なのは、Cookieの値がクリア/期限切れになったときに何をするかを処理するのに役立つ「else」ブロックに何でも入れることができるということです(これは常に期待する必要があります)。「忘れた」構成をリセットするためにユーザーに情報を要求するページにリダイレクトするか、データを何があっても永続化したい場合は、代わりにこれらの値をデータベースに保存することを検討してください。これらの値はクリアされません。 /期限切れ。

最後に、これで問題が解決しない場合は、次のようにします。

Cookieに保存する値(指定するデフォルト値)がわからない場合は、その場で何を覚えているかを知る必要があるため、再考する必要があります。データの流れをどのように構成したか。

申し訳ありませんが、私はかつて、Session変数のみを使用してそれを実行しましたが、それはきれいではありませんでした:)

Webページ間でデータを転送するための最良の方法についてサポートが必要な場合は、Mike BrindのWebサイトからのこの非常に役立つ簡潔なリンクを確認してください:http: //www.mikesdotnetting.com/Article/192/Transferring-Data-Between -ASP.NET-Webページ

于 2013-03-20T21:46:48.107 に答える
0

次のようになります

  if(Request.Cookies["BookingEnquiry"] == null)
  {
     return; // <- if BookingEnquiry is null we end this routine
  }

   // Normal code flow here...

または同様のもの

于 2013-03-19T14:52:13.763 に答える