我使用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;
}
}
这里不需要解码。
这是正确的吗?
答案 0 :(得分:1)
您需要对要传递的参数进行编码。您可以使用HttpUtility.UrlEncode(value);
方法编码参数。
您可以在.aspx页面上执行c#代码,如下所示
<a href="WebForm2.aspx?item=<%=HttpUtility.UrlEncode('#004')%>">go to webForm2</a>