2

データベースの名前、説明、画像をリピーターで表示しようとしています。名前と説明は正常に機能しますが、画像は表示されません。画像は私のプロジェクトのフォルダにあり、データベースの「パス」列に保存した文字列を使用して画像にアクセスしようとしています。

ああ、でもブラウザのソースコードを見ると、src = ""は見栄えがよく、srcを貼り付ければ、ブラウザで写真を見ることができます。

これが私のコードです:

<head runat="server">
<title></title>

<style type="text/css">
    .bilder {width:300;
             height:200;
             margin: 10px;
             border: 1px solid black;
             }
</style>

</head>
<body>
<form id="form1" runat="server">

<div>
    <asp:Repeater runat="server" ID="minRepeater">

        <ItemTemplate>
            <div class="wrapper">
                <h1><%# DataBinder.Eval(Container.DataItem, "Name") %></h1>
                <span id="desc"><%# DataBinder.Eval(Container.DataItem, "Description") %></span><br />
                <img src="<%# DataBinder.Eval(Container.DataItem, "Path") %>" alt="test" class="bilder" />
                <asp:Image ID="Image1" CssClass="bilder" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Path")%>' runat="server" />
            </div>
        </ItemTemplate>
    </asp:Repeater>
</div>

およびコードビハインド:

protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = connectionstring;

        SqlCommand com = new SqlCommand();
        com.CommandText = "SELECT * FROM Pictures";
        com.Connection = con;

        SqlDataAdapter ad = new SqlDataAdapter();
        ad.SelectCommand = com;

        DataTable dt = new DataTable();
        ad.Fill(dt);

        Response.Write(dt.Rows.Count);

        minRepeater.DataSource = dt;
        minRepeater.DataBind();
    }

(はい、私のコードは安全ではないことを知っています。まったく。)

ブラウザでの表示は次のとおりです。 ここに画像の説明を入力してください

何か案は?:)

4

3 に答える 3

2

あなたの道はC:\\Images\etc...のようなものですか?を取得"Not allowed to load local resource"している場合は、相対パスを使用してパスを試す必要があります。Webサイトにパスがない場合は、サイトに画像のコピーを作成し、そのパスをレンダリングする必要があります。あなたはセキュリティの問題に直面しています。

于 2012-04-18T17:54:19.933 に答える
2

Firebug または Chrome で実行して、画像が見つからないかどうか (404) とそのパスを確認できます。

于 2012-04-18T17:45:44.210 に答える
2

発生しているエラーはNot allowed to load local resource、ローカル システムのパスを使用してロードしようとしているように聞こえます。Server.MapPathファイルへの相対パスで使用しようとしています。たとえば、次のようになります。

Server.MapPath("~/images/my-image.jpg");
于 2012-04-18T17:56:36.407 に答える