如何在HTML <img src=""/>中引用控制器字符串

时间:2018-11-22 11:51:07

标签: c# html asp.net-core

我正在尝试在img标签的src中显示控制器字符串,但是是的,我失败了。

这是我的型号代码:

public class PigeonDetails
{
    [Key]
    public int PigeonID { get; set; }

    [Required]
    [Display(Name = "Ring Number")]
    public string RingNumber { get; set; }

    [Display(Name = "Pigeon Name")]
    public string Name { get; set; }

    [Required]
    [Display(Name = "Pigeon Color")]
    public string Color { get; set; }

    [Required]
    [Display(Name = "Gender")]
    public string Sex { get; set; }

    [Required]
    [Display(Name = "Year Type")]
    public int Year { get; set; }

    [Display(Name = "Description")]
    public string Description { get; set; }

    [Display(Name = "Date Added")]
    public DateTime DateAdded { get; set; }

    public string Image { get; set; }

}

这是我的控制器-只有我使用的方法:

[HttpGet]
    // GET: PigeonDetails/Edit/5
    public async Task<IActionResult> Edit(int? id)
    {
        if (id == null)
        {
            return NotFound();
        }

        var pigeonDetails = await _context.PigeonDetails.SingleOrDefaultAsync(m => m.PigeonID == id);

        string placeholder = _context.PigeonDetails.Where(u => u.PigeonID == id).Select(u => u.Image).ToString();
        pigeonDetails.Image = placeholder;
        if (pigeonDetails == null)
        {
            return NotFound();
        }
        ViewData["ImagePath"] = pigeonDetails;
        return View(pigeonDetails);
    }

pigeonDetails.Image是一个存储在数据库中的字符串(图像路径-可以正确存储)

这是我的html:

  @{var image = (PigeonDetails)ViewData["ImagePath"];}

 <img src="@image.Image" id="profile" alt="user" class="img-responsive radius">

它没有在页面上显示我的图像,请帮忙。

3 个答案:

答案 0 :(得分:0)

你能试试吗

上一页

@model ModelNameSpace.PigeonDetails

和您的html元素

<img src="@Model.Image" id="profile" alt="user" class="img-responsive radius">

请更改名称空间。这只是名称空间名称示例;)

答案 1 :(得分:0)

首先,删除字符串placeholder,因为PigeonDetails如果已匹配ID,则已经有了它。此外,IQueryable上的.ToString()存在问题,因为它将返回接收到调用的对象的运行时类型的完全限定名称。

第二,删除ViewData位。您已经为视图使用了模型(最好使用ViewModel)。

然后在视图顶部添加@model PigeonDetails,以显示视图的Model属性。

最后,<img src="@Model.Image" />

答案 2 :(得分:0)

这就是我要做的。我删除了很多不必要的代码。

我对您的Edit操作方法进行了很多调整:

[HttpGet]
public async Task<IActionResult> Edit(int? id)
{
     if (id == null)
     {
          return NotFound();
     }

     PigeonDetails pigeonDetails = await _context.PigeonDetails
          .Where(m => m.PigeonID == id)
          .SingleOrDefaultAsync();

     if (pigeonDetails == null)
     {
          return NotFound();
     }

     return View(pigeonDetails);
}

在您的Edit视图页面中,执行以下操作:

@model YourNamespace.PigeonDetails

<img src="@Model.Image" id="profile" alt="user" class="img-responsive radius" />

远离视图数据,首选和更安全的方法是使用视图模型。

希望对您有帮助。