1

更新:

在我的代码隐藏代码中,我有这样的公共变量和 assing

public string Id { get { return Request.QueryString["id"].ToString(); } }` 

在 .aspx 页面中我试图访问

$(this).attr("EmployeeId", Id);

得到错误名称

'Id' does not exist in the current context

结束更新

我有两个 aspx 页面:

1) employee.aspx
2) employee_detail.aspx

如何将动态 id 从一个页面传递到另一个页面

以下代码在employee.aspx页面中

//more code here..
//but to relvant to my question is here...

var submitButton = function()  {             
  //more code here...         
  if(employeeId != ""){   //redirecting here...
    window.location.href = "employee_detail.aspx"; 
 }    
} 

所以在employee_detail.aspx页面中我有一个 jquery 函数,目前我正在对 id 进行硬编码,如下所示:

<script type="text/javascript"> 

$(document).ready(function () { 

 var id = 'A42345'; //hardcoded.... 

$(this).attr("EmployeeId", id);  

</script>

所以我的问题是,我正在寻找一种方法来传递employee.aspx和接收idemployee_detail.aspx

我想过这样做,但出于安全原因,我不想在 url 中公开 id:

window.location.href = "mypage.aspx?id = " + id; 
4

6 回答 6

0

我过去喜欢使用的一个选项是向正在加载的页面提交表单。该表单有一个隐藏字段,其中包含 javascript 想要传递给页面的 JSON 数据。然后,服务器查找 JSON 数据,对其进行解析并使用它包含的值。

这有点类似于 ASP 的视图状态和/或会话,但无需打开视图状态或会话即可工作。

于 2012-04-11T21:26:52.987 回答
0

好吧,如果您只是想传递一个变量,cookie 就可以完成这项工作。显然,这不是一种安全的数据存储方式,而是为普通用户提供了一个不可见的层。

https://github.com/carhartl/jquery-cookie

这个插件非常小而且简单...

在第一页设置 cookie:

$.cookie('the_cookie', 'the_value');

或者

$.cookie('the_cookie', 'the_value', { expires: 7 });

并在下一页上获取值:

$.cookie('the_cookie'); 
于 2012-04-11T20:52:14.613 回答
0

您应该认真考虑实现会话并将用户 ID 存储在会话变量中,而不是像这样手动传递它。阅读:http: //msdn.microsoft.com/en-us/library/ms178581.aspx

但如果您坚持,您可以使用 jQuery 将数据 POST 到第二页,而不是使用 GET,然后在服务器 (ASP) 端将 POST 变量值回显到 Javascript。

于 2012-04-11T19:52:52.113 回答
0

你可以在javascript中组合你的动态代码(顺序应该是这样的)请注意我使用的是ASP经典。

<% 
Dim ID
ID = Request.QueryString("id") 'Or any other request
%>

<script type="text/javascript"> 
var id = '<%=id%>'//OR any dynamic request
$(this).attr("EmployeeId", id); 
</script>
于 2012-04-11T19:52:58.427 回答
0

试试这个方法:

$.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "employee_detail.aspx",
            dataType: "json",
            data: { id: 1 }, // or the string: 'id=1'
            complete:
            function () {
                window.location = "employee_detail.aspx";
            }

    });

来自http://api.jquery.com/jQuery.ajax/

于 2012-04-11T19:54:21.947 回答
0

您可以在服务器代码中将 ajax 与 webmethod 一起使用。在 web 方法中,您可以使用 HttpContext.Current 访问 Sessions

$.ajax({
    type: "POST",
    url: "mypage.aspx/ServerMethodName",    
    data: '{"id":"' + $("#divID").text() + '"}',        
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (returnValueFromServerMethod) {
        if(returnValueFromServerMethod.d != "")
            //do something great

    }
});

[WebMethod]
public static string ServerMethodName(string id)
{
    HttpContext.Current.Session["ID"] = id;            
}

您需要在 page.aspx 中添加一个以启用页面方法。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">                    
</asp:ScriptManager>

您可以将页面方法的内容替换为更清洁的服务 .svc。

于 2012-04-11T20:02:50.193 回答