从Request.QueryString获取值到另一个方法

时间:2014-02-06 03:16:12

标签: c# asp.net methods request

我试图将nom的值输入StudentListByFilter(),任何人都可以帮我这些吗?默认值返回0.我想将查询字符串(nom)插入StudentAttendanceList(),但值为0.

public partial class AttedanceManagementJT : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //int nom = Convert.ToInt32(Request.QueryString["ActivityId"]);
    }
    [WebMethod(EnableSession = true)]
    public static object StudentListByFilter()
    {
        return ApplyMethods.StudentAttendanceList(Convert.ToInt32(HttpContext.Current.Request.QueryString["ActivityId"]));
    }

2 个答案:

答案 0 :(得分:1)

您无法将值“传递”给其他方法的原因是它不是另一种方法。它是一个“页面方法”,它在一个单独的请求中运行。在第二个请求中,没有“ActivityId”查询字符串参数。

但是,您可以将查询字符串参数从第一个请求(通过会话状态)传递到第二个请求:

public partial class AttedanceManagementJT : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        int nom = Convert.ToInt32(Request.QueryString["ActivityId"]);
        Session["nom"] = nom;
    }

    [WebMethod(EnableSession = true)]
    public static object StudentListByFilter()
    {
        return ApplyMethods.StudentAttendanceList(
            Convert.ToInt32(HttpContext.Current.Session["nom"]));
    }
}

答案 1 :(得分:0)

在我的情况下,使用或不使用某些参数调用页面,会话将保留上一次调用的值 - 这将导致问题。 我发现在我的情况下更稳定的解决方案是在页面上有一些隐藏字段,在pageload上将参数保存到它,然后将此值从客户端javascript传递给webmethod作为附加参数。