0

イメージフィールドを含むユーザー情報を含み、イメージをバイナリデータに格納するテーブルがあります。

この画像をビュー ページのユーザー情報を含むテーブルに表示したいと考えています。

私のコードは..コントローラーです

public ActionResult About()
        {
var data = db.dbtable.ToList();
return View(data);
}

Get Image メソッド // reg は dbtable のオブジェクトです

public FileContentResult GetImage(int id)
        {            
            reg = db.dbtable.FirstOrDefault(i => i.RegNo == id);            
            if (reg != null)
            {
                return File(reg.Photo, "image/jpeg");
            }
            else
            {
                return null;
            }
        }

閲覧ページに..

@model IEnumerable<MvcMySchool.dbtable>

<table width="50">
    <tr>
        <th> 
            Registration No.
        </th>
        <th>
            First Name
        </th>
        <th>
            Last Name
        </th>
        <th>
            City
        </th>
        <th>
            Photo
        </th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.RegNo)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.FirstName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.LastName)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.City)
            </td>
            <td>
            @*HttpContext.Current.Response.Write("<img width="75" height="75" src=@(Url.Action("GetImage", "Home", new { id = item.RegNo })) />")*@
                <img width="75" height="75" src=@(Url.Action("GetImage", "Home", new { id = item.RegNo })) />
            </td>
        </tr>
    }
</table>

最初の行にのみ画像が表示され、その後は何も表示されません。

ありがとう..

4

1 に答える 1

1

パスをイメージのままにしておく方が理にかなっているかもしれません。

ファイルチームなら、

public FileStreamResult GetImage(int id)
{

reg = db.dbtable.FirstOrDefault(i => i.RegNo == id);            
            if (reg != null)
            {

    MemoryStream ms = new MemoryStream(reg.Photo);
    return File(ms, "image/png");

            }
            else
            {
                return null;
            }
}

維持するためのより論理的な方法、唯一の方法

public FileResult GetImage(int id)
{
reg = db.dbtable.FirstOrDefault(i => i.RegNo == id);            
                if (reg != null)
                {
    FileInfo fi = new FileInfo(Server.MapPath(reg.Photo));
    return File(fi.OpenRead, "image/png");
                }
}

両方のための

<tr>
    <td>
       <img src="/Home/GetImage/@item.RegNo" alt="" />
    </td>
</tr>
于 2012-07-03T11:12:29.463 に答える