更新
在我的代码隐藏代码中,我有公共变量和像这样的分析
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
的ID并在employee_detail.aspx
我想这样做但是出于安全原因我不想在url中公开id:
window.location.href = "mypage.aspx?id = " + id;
答案 0 :(得分:0)
您应该认真研究实现会话并将用户ID存储在会话变量中,而不是像这样手动传递它。阅读:http://msdn.microsoft.com/en-us/library/ms178581.aspx
但是如果你坚持,你可以使用jQuery将数据发布到第二页,而不是使用GET,然后在服务器(ASP)端,将POST变量值回显到Javascript。
答案 1 :(得分: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>
答案 2 :(得分: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";
}
});
答案 3 :(得分: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替换页面方法内容。
答案 4 :(得分:0)
好吧,如果你只是想传递一个变量,那么cookie就可以完成这项工作。显然,这不是一种存储数据的安全方法,而是为普通用户提供了一个不可见的层。
https://github.com/carhartl/jquery-cookie
这个插件很小很简单......
在第一页上设置Cookie:
$.cookie('the_cookie', 'the_value');
或
$.cookie('the_cookie', 'the_value', { expires: 7 });
要获得下一页的价值:
$.cookie('the_cookie');
答案 5 :(得分:0)
我过去喜欢使用的一个选项是将表单提交到正在加载的页面。该表单有一个隐藏字段,其中包含javascript要传递给页面的JSON数据。然后,服务器查找JSON数据,解析它并使用它包含的值。
这有点类似于ASP的视图状态和/或会话,但无需打开视图状态或会话即可正常工作。