【问题标题】:How to hide the SqlDataSource coding?如何隐藏 SqlDataSource 编码?
【发布时间】:2011-12-13 18:37:05
【问题描述】:

我曾使用 SqlDataSource 将数据从数据库检索到 gridview。

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:HRMS_DBConnectionString1 %>"
        DeleteCommand="DELETE FROM [tblEmployeeDetail] WHERE [EmpId] = @EmpId" InsertCommand="INSERT INTO [tblEmployeeDetail] ([EmpId], [Name], [UserName], [Password], [Gender], [Age], [Address], [IdentityCardNo], [Race], [Position], [Section], [Department], [JoinDate], [ResignDate], [HodId], [Email]) VALUES (@EmpId, @Name, @UserName, @Password, @Gender, @Age, @Address, @IdentityCardNo, @Race, @Position, @Section, @Department, @JoinDate, @ResignDate, @HodId, @Email)"
        ProviderName="<%$ ConnectionStrings:HRMS_DBConnectionString1.ProviderName %>"
        SelectCommand="SELECT [EmpId], [Name], [UserName], [Password], [Gender], [Age], [Address], [IdentityCardNo], [Race], [Position], [Section], [Department], [JoinDate], [ResignDate], [HodId], [Email] FROM [tblEmployeeDetail] WHERE ([Name] IS NULL)"

出于安全目的,有什么方法可以隐藏此编码。它显然显示了表名及其所有实体。我希望使用此功能,因为它更容易通过直接自动编辑和删除功能来管理 gridview 中的数据,但同时表示层假设不会在编码中显示数据库内容。到底有没有?

【问题讨论】:

  • 对谁隐藏?这些控件不会呈现给客户端(除非您的服务器配置错误并且没有实际处理 ASP.NET 代码)。
  • “表示层假设不显示编码中的数据库内容” - 在这个整体架构中您没有表示层。如果您有另一个层可以放入,则只能将特定于数据库的内容保留在表示层之外。
  • 假设发生了错误,代码无法从数据库中找到特定实体。不是稍后会在 aspx 处出现一条错误消息,显然表明该表中的该实体 cud 未找到,出现在客户端..
  • @Memoc 正确处理错误?对我来说,这听起来像是一个经典的 XY 问题。

标签: c# asp.net sql visual-studio


【解决方案1】:

您是否认为您的代码示例将出现在 HTML 中并可供公众查看? 不会。SQLDataSource 被编译并生成数据,这些数据在页面被提供给客户端之前插入到各种 HTML 元素中。

http://msdn.microsoft.com/en-us/library/ms178472.aspx#lifecycle_events

【讨论】:

    【解决方案2】:

    如果您愿意,可以在 .cs 文件中设置这些属性。但也许这对你来说还不够深,即那仍然是表示层?

    【讨论】:

      猜你喜欢
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 2012-04-10
      • 2021-06-22
      • 2018-09-19
      相关资源
      最近更新 更多