-1

我正在尝试进行客户端单击并重定向到添加了标题信息的另一个站点,我的 onclick 客户端代码是这样的:

function selectApp(appGUID, userId ,embedUrl)
{
    if(embedUrl==="")
    {
        var success = setAppGUID(appGUID);
        window.location.replace('AppDetail.aspx');
    }
    else
    {   
        $.ajax({
            type: "POST",
            url: embedUrl,
            contentType: "text/html",
            beforeSend: function (xhr, settings) {
                xhr.setRequestHeader("UserId", userId);
            },
            success: function (msg) {
                //actually redirect to the site
                window.location.replace(embedUrl);
            }
        });
    }  
}

而服务器端代码embedUrl

protected void Page_Load(object sender, EventArgs e)
{
    string isSet = (String)HttpContext.Current.Session["saveUserID"];
    if (String.IsNullOrEmpty(isSet))
    {
        NameValueCollection headers = base.Request.Headers;
        for (int i = 0; i < headers.Count; i++)
        {
            if (headers.GetKey(i).Equals("UserId"))
            {
                HttpContext.Current.Session["saveUserID"] = headers.Get(i);
            }
        }
    }
    else
    {
        TextBox1.Text = HttpContext.Current.Session["saveUserID"].ToString();
    }
}

这似乎工作,但它不是太优雅。有没有办法用标头数据重定向?没有(我在做什么)在会话变量中保存标头信息,然后在 2 个单独的部分中进行重定向。

4

1 回答 1

-1

您可以实现一个页面方法并将数据发布到它。以该方法移动您当前的逻辑。

请参阅以下示例:

成功发布后,您可以重定向到另一个页面,例如您当前的实现。

编辑:尝试这样的事情:

1) 在 Code behind 中添加一个 Web 方法

  [WebMethod]
  public static string SaveUserId(string userId)
  {
    string sessionUserId= (string)HttpContext.Current.Session["saveUserID"];
    if (string.IsNullOrEmpty(sessionUserId))
      HttpContext.Current.Session["saveUserID"] = userId;
    else
      TextBox1.Text = sessionUserId;
  }

2)从JS调用它

 //Add here code before..
 $.ajax({
                url: "PageName.aspx/SaveUserId",
                data: "{'userid':" + userid + "}",
                contentType: "application/json; charset=utf-8",
                dataType: "json"
                success: function (msg) {
                    //actually redirect to the site
                    window.location.replace(embedUrl);
                }
            });

有关使用 jQuery 调用 Page 方法的更多信息:

于 2012-10-12T16:30:23.730 回答