Установка переменных сеанса при нажатии кнопок изображения? - PullRequest
0 голосов
/ 26 декабря 2011

У меня есть две кнопки изображений на странице. При нажатии любой из них необходимо установить переменные сеанса yesID и NoId, прежде чем страница будет отправлена ​​обратно. Я попытался поместить код в события нажатия для каждой кнопки, но страница загружается снова, прежде чем она запускает этот код в событиях нажатия. Как я могу установить 2 переменные сеанса при нажатии любого изображения?

  <div id="MainPics">
        <div id="RightPic">
            <p>
                <asp:Label ID="FirstPicMemberNameLabel" runat="server" Text="" Font-Bold="True" ForeColor="White"></asp:Label>
            </p>
            <asp:ImageButton ID="FirstPicLink" Width="90%" runat="server" 
                onclick="FirstPicLink_Click" />
        </div>
        <div id="LeftPic">
            <p>
                <asp:Label ID="SecondPicMemberNameLabel" runat="server" Text="" ForeColor="White" Font-Bold="True"></asp:Label>
            </p>
            <asp:ImageButton ID="SecondPicLink" Width="90%" runat="server" 
                onclick="SecondPicLink_Click" />
        </div>
        <div id="skip">
            <asp:LinkButton ID="LBNoChoice" PostBackUrl="~/default.aspx" ForeColor="White" runat="server">Skip - I Can't Choose</asp:LinkButton>
        </div>
    </div>

Код за страницей

   protected void Page_Load(object sender, EventArgs e)
    {

        if (!IsPostBack)
        {

            Session["yesID"] = 0;
            Session["noId"] = 0;
        }
        else
        {
            //Send Session Variables to Database for Storage.

        }    
 }

  protected void FirstPicLink_Click(object sender, ImageClickEventArgs e)
    {
        Session["yesID"] = 1;
        Session["noId"] = 2;
    }

    protected void SecondPicLink_Click(object sender, ImageClickEventArgs e)
    {
        Session["yesID"] =2;
        Session["noId"] = 1;
    }

Ответы [ 2 ]

1 голос
/ 26 декабря 2011

Помогает ли эта логика?

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Session["yesID"] = 0;
        Session["noId"] = 0;
    }
    //else
    //{
        //Send Session Variables to Database for Storage.
    //}
}

protected void FirstPicLink_Click(object sender, ImageClickEventArgs e)
{
    Session["yesID"] = 1;
    Session["noId"] = 2;

    SendSessionVariables(Session["yesID"], Session["noId"]);
}

private void SendSessionVariables(object p, object p_2)
{
    // Your database code here
}

protected void SecondPicLink_Click(object sender, ImageClickEventArgs e)
{
    Session["yesID"] = 2;
    Session["noId"] = 1;

    SendSessionVariables(Session["yesID"], Session["noId"]);
}
0 голосов
/ 26 декабря 2011

Когда вы нажимаете на кнопку с изображением asp.net, обычно запускается событие click и вызывается метод, если autopostback не отключен.Если вы действительно хотите изменить значения сеанса до срабатывания автостопа, вызовите функцию javascript на стороне клиента для события onclientclick и с этого сделайте ajax-вызов страницы сервера, где вы обновляете значения переменных сеанса.Как только вы получите ответ от вызова ajax (событие успеха), верните true, чтобы веб-страница продолжалась с событием обратной отправки формы.

...