【问题标题】:Values passed by GET method are forgotten when the form is submitted提交表单时忘记 GET 方法传递的值
【发布时间】:2012-02-18 17:50:09
【问题描述】:

我正在创建一个用于创建、删除、投票和查看在线调查的 Web 系统,但在 GET 方法中传递的参数有问题。

页面ViewSurvey.aspx 获取调查 ID 的参数,然后从数据库加载信息并显示它。例如,要查看 ID 为 vacations 的调查信息,我们可以使用:ViewSurvey.aspx?survey=vacations

该页面有一个表单,其中包含将查看其投票的选项(即:按位置、年龄等...)。但是当表单提交时,URL中的survey参数不见了。

我能做些什么来解决这个问题,还有什么方法可以将调查 ID 作为参数传递?

【问题讨论】:

    标签: asp.net html forms


    【解决方案1】:

    您可以使用类似于以下 c# 示例的代码访问 QueryString 变量。

    protected void Page_Load(object sender, EventArgs e)
    {
        string surveyType = Page.Request.QueryString["survey"];
    }
    

    从 Request 对象中获取 QueryString 后,您可以使用 ASP.NET 提供的众多选项之一(这里有一些)将其持久化。

    // Add item to cache
    Cache["Survey"] = surveyType;
    
    // Add item to Context
    Context.Items["Survey"] = surveyType;
    
    // Add item to ViewState
    ViewState["Survey"] = surveyType;
    

    【讨论】:

    • 问题是,用户可能会更改他查看的调查。是否只有单个页面的缓存?
    • 如果只处理页面,您可以使用 ViewState 或隐藏字段,因为数据将驻留在页面的内容中。缓存/上下文/会话/等...可以在页面之外存活。 Cache 的好处是它可以过期。
    【解决方案2】:

    在表单中创建一个名为“survey”的隐藏字段,并将其初始化为请求参数的值,例如'假期'。

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多