我有一个包含可以动态添加的超链接的GridView。这是我的.aspx代码。
<asp:GridView ID="TeamGrid" runat="server" AutoGenerateColumns="False" HeaderStyle-BackColor="#337AB7" HeaderStyle-ForeColor="White" CssClass="table table-condensed" CellPadding="4" ForeColor="#333333" GridLines="None" Width="350px">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:HyperLinkField DataTextField="Team" DataNavigateUrlFields="Team_ID" DataNavigateUrlFormatString="Team.aspx?Team_ID={0}" HeaderText="Team" ItemStyle-Width="250">
<ItemStyle Width="250px"></ItemStyle>
</asp:HyperLinkField>
<asp:BoundField DataField="Position" HeaderText="Position" ItemStyle-Width="150">
<ItemStyle Width="150px"></ItemStyle>
</asp:BoundField>
</Columns>
</asp:GridView>
这是我向网格添加数据的方式。
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Team_ID"), new DataColumn("Team"), new DataColumn("Position") });
foreach(Team team in UserTeams)
{
if (team.Leader_ID.Equals(UserID)) //check whether user is the leader of the team.
{
dt.Rows.Add(team.Team_ID, team.Team_Name, "Leader");
}
else
{
dt.Rows.Add(team.Team_ID, team.Team_Name, "Member");
}
}
TeamGrid.DataSource = dt;
TeamGrid.DataBind();
TeamGrid是Grid的ID。 团队是一个对象。
我想隐藏/加密我使用URL发送的参数。 (参数-Team_ID)并在结果页面中解密。 (Team.aspx) 我怎样才能做到这一点? (我是asp.net和C#的新手)
答案 0 :(得分:0)
如果您的目标是阻止人们猜测查询字符串中的Team_ID参数,则不应使用Team_ID,因为查询字符串无法有效加密,如果您使用Team_ID的Identity db值,则可以轻松猜测够了。
您可以在Team对象/表中创建一个名为“Team_Key”的新字段。 Team_Key将是一个随机字符串,始终是唯一的。每次创建Team对象时,确保获得唯一Team_Key的好方法是通过这样做......
team.Team_Key = Guid.NewGuid().ToString();
然后,您需要使用Team_Key替换代码中对Team_ID的所有引用,例如
DataNavigateUrlFormatString="Team.aspx?Team_ID={0}"
...变为
DataNavigateUrlFormatString="Team.aspx?Team_Key={0}"
你的网格数据绑定和Team.aspx代码隐藏显然也需要更新。