本人asp.net新手,有几个问题没有搞明白:1、我的程序里,对用户的权限设置保存在数据库中,这样我如何保证用户登录时能使用所对应的权限?用户的登录信息保存在cookie里吗,有什么好的方式2、图片也保存在数据库里,在asp.net(c#)的ImageField里,好象不能直接对应到数据库,我的一条记录有多幅图片,我怎么样才能在同一个页面里显示一条完整的记录,包括文本信息和多幅图片?请各位大侠能说的清楚一些,我查了一些帖子,都没有看明白,谢谢

解决方案 »

  1.   

    登录的时候读出来 
    放到Session或者Cookie
    进行操作时候
    判断是否具有权限
    然后进行操作2;先读出来 然后自己使用template控制DataList显示
      

  2.   

    登陆信息放在Session内,在判断权限。
    第2个问题没太看明白,是一条记录内有多个图片吗?那直接和文本一起存进数据库啊,图片的位置存的是HTML代码:<img src="http://www.sohu.com/1.gif">
      

  3.   

    http://erpcrm.cnblogs.com/archive/2005/09/14/234800.html
    http://rainlake.cnblogs.com/archive/2005/09/01/227480.html
    http://rainlake.cnblogs.com/archive/2005/09/02/229105.html
      

  4.   

    我的库文件内保存的不是图片的路径,而是图片本身。是Oracle的Blob类型。
      

  5.   

    1、用户登录时,从数据库中取出权限,用Session或者Cookie保存
      

  6.   

    用户的权限一定不能用Cookie保存,可以考虑使用Session,Cookie是在客户端保存用户信息的,肯定不够安全,除非是一些不重要的信息可以保存在cookie中图片用二进制存放的缺点是,当你插入或者更新图片的内容时,如果图片比较大,比较耗费内存,如果不是很重要,数据库就保存图片的路径也无不可
      

  7.   

    1. 不知道你的具体问题是怎样。你应该给出你自己的实现代码,例如读取数据库时出现的问题,或者是读取cookie时出现的问题,读取Cache时出现的问题,等等。明明你有至少一种方法读取权限,摆出“一张白纸”的方式,其实也不一定能得到很好的效果。2. 这里你恐怕是误会很深了。ImageField仅仅绑定产生图片的url字符串,也就是说你的数据源仅仅保存url,而不是图片。
      

  8.   

    声明为asp.net新手,请各位指点。幸得各位跟贴,权限的问题已经解决,不知道图片如何解决?
      

  9.   

    顺路同问,ImageField里怎么控制图片大小...
      

  10.   


    下面的代码实现从SQL Server数据库提取图片并显示在DataGrid的功能。<%@ Page Language="vb" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <html>
    <head>
    <title>用户列表</title>
    <script runat=server>
    Sub Page_Load(sender As Object, e As EventArgs)
      If Not Page.IsPostBack Then
      BindGrid()
      End If
    End SubPrivate Sub BindGrid()
      Dim strCnn As String = "Data Source=.;Initial Catalog=mxh;User Id=sa;Password=;"
      Dim myConnection As SqlConnection = New SqlConnection(strCnn)
      Dim myCommand As SqlCommand = New SqlCommand("SELECT * FROM Person", myConnection)
      myCommand.CommandType = CommandType.Text
      Try
        myConnection.Open()
        DG_Persons.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
        DG_Persons.DataBind()
        Catch SQLexc As SqlException
        Response.Write("Error occured while Generating Data. Error is " & SQLexc.ToString())
      End Try
    End SubFunction FormatURL(strArgument) as String
      Return ("ReadImage.aspx?id=" & strArgument)
    End Function
    </script>
    </head>
    <body style="font: 9pt 宋体">
    <h3 align=center>从数据库中取得照片并显示在DataGrid中</h3>
    <form id="Form1" method="post" runat="server">
    <asp:DataGrid ID="DG_Persons" AutoGenerateColumns=False Width="99%"
     HeaderStyle-BackColor="#ff0000" HeaderStyle-Font-Bold="True" HeaderStyle-ForeColor="#ffffff"
     ItemStyle-BackColor=Beige BorderColor="#000000" Runat=server HeaderStyle-HorizontalAlign=Center>
    <Columns>
    <asp:TemplateColumn HeaderText="姓名">
    <ItemTemplate>
    <asp:Label Runat="server"  Text='<%# DataBinder.Eval(Container.DataItem, "PersonName") %>' ID="Label1"/>
    </ItemTemplate>                               
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="电子邮件">
    <ItemTemplate>
    <asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonEmail") %>' ID="Label2"/>
    </ItemTemplate>                               
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="性别">
    <ItemTemplate>
    <asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonSex") %>' ID="Label3"/>
    </ItemTemplate>                               
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="出生日期">
    <ItemTemplate>
    <asp:Label Runat="server" 
      Text='<%# DataBinder.Eval(Container.DataItem, "PersonDOB") %>' ID="Label4"/>
    </ItemTemplate>                               
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="照片">
    <ItemTemplate>
    <asp:Image Runat=server ID="Image1"  Width="150" Height="125"
     ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "PersonID")) %>'  />
    </ItemTemplate>                               
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    </form>
    </body>
    </html>ReadImage.aspx<%@ Page Language="vb" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <HTML>
    <HEAD>
    <script runat=server>
    Public Sub Page_Load(sender As Object, e As EventArgs)
      Dim strImageID as String = Request.QueryString("id")
      Dim myConnection As New SqlConnection("Data Source=.;Initial Catalog=mxh;User Id=sa;Password=;")
      Dim myCommand As New SqlCommand("Select PersonImageType, PersonImage from Person Where PersonID=" _
        + strImageID, myConnection)  Try
        myConnection.Open()
        Dim myDataReader as SqlDataReader 
        myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
        Do While (myDataReader.Read())
        Response.ContentType = myDataReader.Item("PersonImageType")
        Response.BinaryWrite(myDataReader.Item("PersonImage"))
        Loop
        myConnection.Close()
        Catch SQLexc As SqlException
      End Try
    End Sub    
    </script>
    </HEAD>
    <body>
    <form runat="server" ID="Form1"></form>
    </body>
    </HTML>