【问题标题】:request querystring in variable请求变量中的查询字符串
【发布时间】:2012-05-22 14:27:01
【问题描述】:

你好,我正在尝试从 url 获取 id 并将其发送到 clint 端,这就是我所做的

这是我的网址:

http://localhost:53010/edit.aspx?Id=4

后面的代码

    Public Partial Class Edit
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load

End Sub
Private _myId As String = Request.QueryString("id")

Public Property myId() As String
    Get
        Return _myId
    End Get
    Set(ByVal value As String)
        _myId = value
    End Set
End Property

结束类 客户

<%= myId%>

错误

Request is not available in this context

这也是我将私有道具移动到 page_load() 时得到的 “private”在局部变量声明中无效—— 知道发生了什么

谢谢


我解决这个问题这里就是答案

Public Partial Class Edit
Inherits System.Web.UI.Page

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
    MyIdVal = Request.QueryString("id")


End Sub

Private _myIdVal As String
Public Property MyIdVal() As String
    Get
        Return _myIdVal
    End Get
    Set(ByVal value As String)
        _myIdVal = value
    End Set
End Property

结束类

【问题讨论】:

  • 您需要了解 VB.Net 类和字段的工作原理。

标签: asp.net .net vb.net


【解决方案1】:

这是一个字段初始化器
字段初始化程序在构造函数之前运行,并且无法访问它们正在初始化的实例。
因此,您不能在那里使用Request 属性。

您需要将其移至构造函数或Page_Load

【讨论】:

  • 当我将它移动到页面加载时,我收到此错误“私有”在局部变量声明中无效
  • 你需要移动初始化。
  • myId = Request.QueryString("id")
  • 当我 Dim myId As String = Request.QueryString("id") 它工作正常但我知道我需要一个属性来将 myId 发送到客户端对吗?
  • 您需要在类中声明一个字段,并将其值设置为Page_Load
【解决方案2】:

您访问Request 太早了。

如果您在InitPage_Load 或任何其他类似的页面事件上设置myId,它将起作用。

【讨论】:

  • 您的解释(第一行)不正确;这与页面生命周期无关。
  • 当我将它移动到页面加载时,我收到此错误“私有”在局部变量声明中无效 –
【解决方案3】:

尝试在您的 PageLoad 中设置 _myId。

【讨论】:

  • 当我将它移动到页面加载时,我收到此错误“私有”在局部变量声明中无效 –
【解决方案4】:

所以我想要一个具有从查询字符串设置的属性的类,并找到了这个线程。我还希望能够从一个位置访问首页甚至 JavaScript 中的属性。这是我想出的:

// App_Code/QueryStrings.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for QueryStrings
/// </summary>
public class QS
{
    private int id = -1;

    public QS()
    {
        if (HttpContext.Current.Request.QueryString["id"] != null)
            try
            {
                Int32.TryParse(HttpContext.Current.Request.QueryString["id"], out id);
            }
            catch
            {
                id = -2;
            }
        else
            id = -3;
    }

    public int ID
    {
    get
        {
            return id;
        }
    }
}

然后你可以从你的 .aspx 页面调用它,如下所示:

<body>
    <form id="form1" runat="server">
    <div>
        <% QS qs = new QS(); %>
        ID = <%= qs.ID %>
    </div>
    </form>
</body>

当然,您可以使用相同的语法从后面的代码中调用。

【讨论】:

  • 您正在使用 tryparse(返回 bool,永远不会抛出),然后在其上捕获异常。 id = -2 永远不会发生。
猜你喜欢
  • 2014-07-21
  • 1970-01-01
  • 2013-04-06
  • 2017-04-13
  • 1970-01-01
  • 2018-08-17
  • 1970-01-01
  • 2014-07-19
  • 1970-01-01
相关资源
最近更新 更多