传递目录路径时出错

时间:2013-10-24 07:15:54

标签: c# asp.net runtime-error

在开始页面中:当客户端点击LinkBut​​ton lbtnEditText

时,我想将目录路径传递给弹出窗口页面
<asp:LinkButton  ID="lbtnEditText" runat="server" Text="Edit Text" CommandArgument='<%# Eval("Path") + "," + Eval("Name")%>' OnCommand="Button1_Click"></asp:LinkButton>

背后的代码:

protected void Button1_Click(object sender, CommandEventArgs e)
    {
        string[] values = e.CommandArgument.ToString().Split(',');

        string queryString =

            "editpage.aspx?path="

            + values[0];

        string newWin =

            "window.open('" + queryString + "');";

        ClientScript.RegisterStartupScript

            (this.GetType(), "pop", newWin, true);

    }

queryString完全是= "editpage.aspx?path=D:\\C#Projects\\website\\Lecturer\\giangvien\\profile.xml"(我在调试时检查)

但是在目标页面(弹出窗口)中:editpage.aspx

    string path = Request.QueryString["path"];
    string content = File.ReadAllText(path);
    if(content!=null)
      textarea.Value = content;

有错误:Could not find file 'D:\C#Projects\website\C 尝试调试,我收到的path只是:"D:C"

editpage.aspx显示地址栏中

http://localhost:41148/website/editpage.aspx?path=D:C#ProjectswebsiteLecturergiangvienprofile.xml

帮助!!!当我将路径传递给编辑页面时,为什么路径会发生变化?

3 个答案:

答案 0 :(得分:2)

背后发生的原因是::你传递的是查询字符串数据,它有意想不到的字符'\,#'。 对此的解决方案是转义并在设置为查询字符串值

之前对此值进行编码

答案 1 :(得分:2)

对于正在进行网站开发的人来说,正确编码网址是不可缺少的技能......

#之后的所有内容都是Url的“哈希”部分,浏览器不需要将其发送到服务器。更正式的名称是fragment identifier

您需要做的是正确编码path查询参数的值(即在JavaScript中使用encodeURIComponent函数)。

答案 2 :(得分:1)

为您提供C#的实际解决方案:

string queryString = "editpage.aspx?path=" + System.Web.HttpUtility.UrlEncode(values[0]);

请参阅编码http://msdn.microsoft.com/en-us/library/system.web.httputility.urlencode.aspx

的参考资料

并解码http://msdn.microsoft.com/en-us/library/system.web.httputility.urldecode%28v=vs.110%29.aspx