为什么照片没有显示在 ASP.NET 网络应用程序中

Why photo is not displaying in ASP.NET web application

我正在使用 C# 语言中的 ASP.NET 表单制作 Web 应用程序。
我需要将图像作为输入并显示它...
这里 'staffStatus' 是 GridView 的 ID..(我不想直接从那里绑定数据,因为应该只显示几列。)

SqlCommand cmd = new SqlCommand("SELECT * FROM [StaffInfo] WHERE Role='Staff' ", con);
                    SqlDataReader dr = cmd.ExecuteReader();
                    if ( dr.HasRows==true )
                    {
                        staffStatus.DataSource = dr;
                        staffStatus.DataBind();
                    }

这是 staffStatus.aspx 页面的内容(显示数据)

<asp:GridView ID="staffStatus" runat="server" AutoGenerateColumns="False" ShowHeader="false" CssClass="table">
        <Columns>
            <asp:TemplateField>
                <ItemTemplate>
                    Id: <asp:Label runat="server" id="staffId" Text='<%# Eval("Id") %>' />
                    <br />
                    Name : <asp:Label ID="staffName" runat="server" Text='<%# Eval("staffName") %>' /> <asp:Label runat="server" id="staffSurname" Text='<%# Eval("staffSurname") %>' />
                    <br />
                    Email : <asp:Label ID="staffEmail" runat="server" Text='<%# Eval("staffEmail") %>' />
                    <br />
                    Gender: <asp:Label runat="server" id="staffGender" Text='<%# Eval("staffGender") %>' />
                    <br />
                    Phone No. : <asp:Label ID="staffPhoneNo" runat="server" Text='<%# Eval("staffPhoneNo") %>' />
                    <br />
                    Joining Date: <asp:Label runat="server" id="staffJoinDate" Text='<%# Eval("staffJoinDate") %>' />
                    <br />
                    Role : <asp:Label ID="Role" runat="server" Text='<%# Eval("Role") %>' />
                    <br />
                    Image : <image src='<%# Eval("staffImage") %>' />
                    <br />
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

这是我将表单数据保存到数据库的方法

string staffImageName = ddlRole.SelectedItem.Text.ToUpper() + "_" + staffImage.PostedFile.FileName;
string staffImagePath = "Images/Staff/" + staffImageName;
staffImage.PostedFile.SaveAs(Server.MapPath("~/Images/Staff/") + staffImageName);
SqlCommand cmd = new SqlCommand("INSERT INTO [staffInfo] VALUES ('" + txtName.Text + "','" + txtSurname.Text + "','" + txtEmail.Text + "','" + ddlGender.SelectedItem.Text + "','" + txtPhone.Text + "','" + DateTime.Today.ToShortDateString() + "','" + cryptPassword + "','" + ddlRole.SelectedItem.Text + "','" + staffImagePath + "')", con);
int chck = cmd.ExecuteNonQuery();

所以基本上它会将照片保存为 STAFF_pic1.jpgADMIN_pic2.jpg 在项目中可用的图像文件夹中.
对于数据库,它存储的数据如 Images/Staff/STAFF_pic1.jpg

但是为什么它没有在应用程序上显示图片!? 谁能告诉我这是怎么发生的以及为什么会发生!??

那么,您 运行 GridView 来自哪个文件夹?

我的意思是您可能有一个名为“accounts/MyAccounts.aspx”的文件夹

所以,如果该网页是嵌套的,那么图片的路径就是这样

            <img src="../Content/ckdelete.png" />

但是,如果网页位于网站的根目录中,那么我们将使用:

             <img src="Content/ckdelete.png" />

因此,必须根据当前网页的来源 运行 更改图像的路径名。但是,假设我们 moved/copied 代码 + 网页到帐户文件夹?那么你可以这样做:

Image : <image src='<%# "../" + Eval("staffImage") %>' />
<br />

通常,我懒得获取路径名,所以我用 gridview 打开该页面,然后从项目浏览中简单地将给定文件夹中的图像拖放到网页上的空白区域,这将使我获得正确的路径名。我复制它,然后从页面中删除图像。

现在,当然,图像的路径名必须是您可用的 Web 路径中的有效文件夹。如果出于安全原因您不希望图像存在有效的 URL? (或任何 PDF),然后您可以将这样的 files/pictures 放置在网络文件夹层次结构之外,并使用隐藏代码读取图片并将其“流式传输”到 gridview。但是,此时,我们假设路径名是网站中的一个有效文件夹,并且如果您在该图片中输入 URL 可以显示这些图片(尝试测试 URL 通过在浏览器中输入它 - 图片是否显示????)。

然后按照上面的方法测试,将图片文件从project explorer中拖拽到网页中,看是否可以显示。

因此,图片源必须是指向您当前网站文件夹的有效文件夹路径。如果没有,那么您可以使用隐藏代码从磁盘驱动器中读取此类文件,但这是一个不同的问题和不同的故事 post!