如何将 base64 解码方法实现到网格视图中



>我有一个数据绑定方法将网格视图绑定到数据库。

 private void BindGrid()
{
    string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    SqlConnection con = new SqlConnection(constr);
    con.Open();
    SqlCommand cmd = new SqlCommand("select bookingId, bookingName, fprice from addCart");
    SqlDataAdapter sda = new SqlDataAdapter();
    cmd.Connection = con;
    sda.SelectCommand = cmd;
    using (DataTable dt = new DataTable())
    {
    sda.Fill(dt);
    GridView1.DataSource = dt;
    GridView1.DataBind();
    }
    con.Close();            
} 

由于我之前使用 base64 编码方法对 bookingId 和 bookingName 进行编码,因此网格视图中显示的数据仅显示编码值。如何添加 base64 解码方法,使其在网格视图中显示解码值?

我如何使用我的编码:

byte[] serviceEncode = System.Text.Encoding.Unicode.GetBytes(serviceLabel.Text);
sqlCmd.Parameters.AddWithValue("@bookingName", SqlDbType.VarChar).Value = Convert.ToBase64String(serviceEncode);

Database value: QgBpAGMAeQBjAGwAZQAmACMAMwAyADsA

我以前在我的项目模板中使用过 html 解码方法。我想知道是否有任何类似的已知方法可以使用base64进行解码?

 <ItemTemplate>
 <asp:Label ID="Label1" runat="server" decoding="base64" Text='<%# HttpUtility.HtmlDecode(Eval("bookingName").ToString()) %>'></asp:Label>                   
 </ItemTemplate>

在数据表中运行 foreach 并使用解码值更新行

string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection con = new SqlConnection(constr);
con.Open();
SqlCommand cmd = new SqlCommand("select bookingId, bookingName, fprice from addCart");
SqlDataAdapter sda = new SqlDataAdapter();
cmd.Connection = con;
sda.SelectCommand = cmd;
         using (DataTable dt = new DataTable())
                {
                    sda.Fill(dt);
                    foreach (DataRow dr in dt.Rows)
                    {
                        //decode the bookingid and bookingname and update in table
                       if(dr["bookingName"].ToString()!=""){
                        string newbookingname = "";
                    try { 
                    newbookingname = System.Text.Encoding.Unicode.GetString(Convert.FromBase64String(dr["bookingName"].ToString()));
                    }
                    catch(Exception e)
                    {
                        newbookingname = dr["bookingName"].ToString();
                    }
                    dr["bookingName"] = newbookingname;
                       }
                    }
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                }
con.Close();  

和网格视图

    <ItemTemplate>
 <asp:Label ID="Label1" runat="server"  Text='<%# Eval("bookingName") %>'></asp:Label>                   
 </ItemTemplate>

~这个答案剂量没有直接的回答,只是一些推荐~

几个月前我遇到了这个问题,我曾经先转换数据,然后再使用它。

建议使用实体框架。

它比 ADO 更灵活。然后,您可以将 GUID 类型用于 ID,并且它很容易在任何地方显示。

对于使用EF,最好先使用数据库而不是编码,通过这项技术,您可以在Visual Studio中创建数据库,然后EF可以为您制作模型,BOOM的所有硬编码都被忽略

通过使用控制器,您可以轻松地从数据库中获取和设置数据

您可以使用此函数:

base64_decode('QgBpAGMAeQBjAGwAZQAmACMAMwAyADsA');

替换此内容:

string newbookingname = Encoding.UTF8.GetString(Convert.FromBase64String(dr["bookingName"].ToString()));

有了这个:

string textDecoded = System.Text.Encoding.UTF8.DecodeBase64(<"Your encoded string">);

您可以针对该错误参考此:如何编码和解码 base64 字符串?

最新更新