这是在asp.net页面之间传递变量的好方法

use*_*293 4 c# asp.net

这是我第一次在asp.net项目中的两个页面之间传递变量.它有效,但我想知道这是否是一个好方法呢?它安全吗?有没有更好的办法?我问的原因是我已经学会了从不在sql中使用连接,而是使用参数(我从现在开始总是这样做).在这种情况下是否存在类似的风险?

在网页1中:

    protected void Button1_Click(object sender, EventArgs e)
    {
        string email = txtEmail.Text;
        string date = txtDate.Text;
        string time = txtTime.Text;
        string name = txtName.Text;

        string url = "~/change.aspx?newemail="+mail+"&newdate="+date+"&newtime="+time+"&newname="+name+"";
        Response.Redirect(url);
    }
Run Code Online (Sandbox Code Playgroud)

在网页2中:

    protected void Page_Load(object sender, EventArgs e)
    {
        String email = Request.QueryString["newemail"];
        String date = Request.QueryString["newdate"];
        String time = Request.QueryString["newtime"];
        String name = Request.QueryString["newname];
        TextBox1.Text = email;
        TextBox2.Text = date;
        TextBox3.Text = time;
        TextBox4.Text = name;
    }
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 5

如果这是一个好方法吗?

并不是的.您需要对值进行url编码,因为如果它们包含特殊字符,则接收页面将无法正确解析它们:

string url = "~/change.aspx?" + 
"newemail=" + HttpUtility.UrlEncode(mail) + 
"&newdate=" + HttpUtility.UrlEncode(date) + 
"&newtime=" + HttpUtility.UrlEncode(time) + 
"&newname=" + HttpUtility.UrlEncode(name);
Run Code Online (Sandbox Code Playgroud)

它安全吗?

一点都不.任何人都可以向您的目标页面发送请求,其中包含他认为对他有益的任何值.

有没有更好的办法?

这取决于您的具体要求以及您传输的信息是否敏感.如果它是敏感信息,那么您可以考虑将值存储在服务器上,而不是将它们作为查询字符串参数传递.例如,您可以使用ASP.NET会话来实现此目的.