asp.net网页传递参数到另一个页面包含“#”

时间:2014-06-25 10:38:26

标签: c# asp.net parameters

我使用vs2010。 C# 我需要将参数从一个页面传递到另一个页面,看起来很容易。 但是我有一个问题,新页面无法获取参数值。 因为“#”

这是样本

这是第1页

<body>
<form id="form1" runat="server">
<div>
<a href="WebForm2.aspx?item='#004'">go to webForm2</a>
</div>
</form>

第2页

 public partial class WebForm2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string item = Request.QueryString["item"];
        //here item value is empty.
    }
}

如何传递具有特殊字符的参数?

我发现encodeURIComponent可以解决问题,但似乎不需要在c#代码中解码。 这是样本

第1页:

 <script type="text/javascript">
    function goto() {
        var id = '#004@$%^&?';
        var url = 'WebForm2.aspx?item=' + encodeURIComponent(id);
        window.location.href = url;
    }
</script>

第2页

    public partial class WebForm2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string item = Request.QueryString["item"];
        Label1.Text = "pass value:" + item;
        //below the result is the same as above
        string value = Server.UrlDecode(item);
        Label2.Text = value;
    }
}

这里不需要解码。

这是正确的吗?

1 个答案:

答案 0 :(得分:1)

您需要对要传递的参数进行编码。您可以使用HttpUtility.UrlEncode(value);方法编码参数。

您可以在.aspx页面上执行c#代码,如下所示

<a href="WebForm2.aspx?item=<%=HttpUtility.UrlEncode('#004')%>">go to webForm2</a>