0

私はショッピング カートを持っています。製品配送のタイム スロットを選択するために、次の 1 週間の日付、最初の列 (行ごとの 1 日あたり)、および別の列のタイム スロットを次のような形式で表示したいと考えています。

Column1                            Column2
Aug 19, 2013    [RadioButton]10:00AM    [RadioButton]12:00PM
Aug 20, 2013    [RadioButton]10:00AM    [RadioButton]12:00PM
Aug 21, 2013    [RadioButton]10:00AM    [RadioButton]12:00PM
Aug 22, 2013    [RadioButton]10:00AM    [RadioButton]12:00PM
Aug 23, 2013    [RadioButton]10:00AM    [RadioButton]12:00PM
Aug 24, 2013    [RadioButton]10:00AM    [RadioButton]12:00PM
Aug 25, 2013    [RadioButton]10:00AM    [RadioButton]12:00PM

gridview を radiobuttonlist (Time Slots 用) で使用してみましたが、問題はユーザーが毎日の時間を選択できることです。別の方法として、JavaScript の最後で選択された TimeSlot を確認しようとしています。次のチェックアウト ウィザードでスロットにアクセスできるようにするため、選択したタイム スロットをセッションに保存したいと考えています。選択されていない場合はタイムスロットを検証し、選択されている場合はアラートで値を取得できます。ただし、非表示フィールド (クライアント エンドでのボタン クリックで保存) から値をセッションに保存しようとすると、セッション値が他のページに取得されません。以下は私が試しているコードです:

 <script>
        function SaveToHiddenField() {
            if ($("input:radio:checked").length > 0) {
                $radio = $("input:radio:checked");
                document.getElementById('<%= hdnField.ClientID %>').value = $radio.val();
                <% Session["Slot"] = hdnField.Value; %>
                window.location.href='default2.aspx'
                return true;
            }
            else {
                alert("Nothing Selected");
                return false;
            }
        }
    </script>

<asp:Button ID="btnSession" runat="server" Text="Save to Session" OnClientClick="return SaveToHiddenField()" />
<asp:HiddenField ID="hdnField" runat="server" />

私が何をしているのか、または私のクエリにとってより良い選択肢となる可能性のある他の代替手段を教えてください。

4

3 に答える 3

1

問題は解決しました。ボタンをクリックすると、コードの下に書きました:

Session["Slot"] = hdnField.Value;
        Response.Redirect("default2.aspx");

ページが default2.aspx にリダイレクトされると、セッション値があります。

皆さん、
特に @JasonP に感謝します。

于 2013-08-19T18:42:33.593 に答える
0

次のように、ASP.NET AJAX ページ メソッドを使用して、セッション値を保存および取得できます。

の分離コードdefault1.aspx:

[WebMethod(EnableSession = true)]
public static void StoreSessionValue(string theValue)
{
    HttpContext.Current.Session["TheValueToStore"] = theValue;
}

のマークアップでdefault1.aspx、次のように jQuery を使用してこのページ メソッドを呼び出します。

$.ajax({
    type: "POST",
    url: "defaul1.aspx/StoreSessionValue",
    data: "{'theValue': document.getElementById('<%= hdnField.ClientID %>').value}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        window.location.href='default2.aspx';
    }
});

の分離コードdefault2.aspx:

[WebMethod(EnableSession = true)]
public static string RetrieveSessionValue()
{
    return HttpContext.Current.Session["TheValueToStore"].ToString();
}

のマークアップでdefault2.aspx、次のように jQuery を使用してこのページ メソッドを呼び出します。

$.ajax({
    type: "POST",
    url: "defaul1.aspx/RetrieveSessionValue",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
        // Do something with the session value that came back in the variable "msg"
    }
});
于 2013-08-19T18:43:39.703 に答える