【问题标题】:Image won't load in asp.net mvc 5图像不会在 asp.net mvc 5 中加载
【发布时间】:2019-03-15 08:41:17
【问题描述】:

提前感谢您的帮助。我正在制作一个网络应用程序,它将图像文件保存为该模型的 CauseController 上的“创建”和“编辑”操作的一部分。但是,尽管能够成功地在 Content 目录中创建一个新文件夹并为每个创建的实例保存一个图像,但我无法让照片出现在构建的视图中。

这是模型类(用于类似于change.org的项目):

public class Cause
{   

    [Key]
    [StringLength(100)]
    public string CauseTitle { get; set; }
    [Required]
    [StringLength(500)]
    public string Description { get; set; }
    [Required]
    public string Author { get; set; }
    [Required]
    public DateTime DatePosted { get; set; }
    public string ImageURL { get; set; }
    public string CatagoryTitle { get; set; }
    [ForeignKey("CatagoryTitle")]
    public Catagory Catagory { get; set; }

    public virtual List<Signature> Signatures { get; set; }
}

这是 [Post] 创建操作方法:

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "CauseTitle,Description,Author,DatePosted,CatagoryTitle")] Cause cause, HttpPostedFileBase UploadImage)
    {
        if (ModelState.IsValid)
        {
            if (UploadImage != null)
            {
                if (UploadImage.ContentType == "image/jpg" || UploadImage.ContentType == "image/png" || UploadImage.ContentType == "image/bmp" || UploadImage.ContentType == "image/gif" || UploadImage.ContentType == "image/jpeg")
                {
                    string causeTitle = cause.CauseTitle;
                    string subPath = "~/Content/" + causeTitle; // your code goes here
                    System.IO.Directory.CreateDirectory(Server.MapPath(subPath));

                    UploadImage.SaveAs(Server.MapPath(subPath) + "/" + UploadImage.FileName);
                    cause.ImageURL = subPath + causeTitle + UploadImage.FileName;
                }
                else
                    return View();
            }
            else
                return View();
            db.Causes.Add(cause);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

            ViewBag.CatagoryTitle = new SelectList(db.Catagories, "CatagoryTitle", "CatagoryDescription", cause.CatagoryTitle);
            return View(cause);
        }

这是视图的一部分:

        @foreach (var item in Model)
{
<div class="jumbotron" style="background-image: url(@item.ImageURL) background-size: 100%" >
    <img src="urlPath" alt="urlPath" />
    <h1>@Html.DisplayFor(model => item.CauseTitle)</h1>
    <p>@Html.DisplayFor(model => item.Description)</p>
    <p><a class="btn btn-primary btn-lg" href="#" role="button">Sign Cause</a></p>
</div>

此尝试的结果元素显示在 Chrome 开发人员中。

我也试过这个:

@foreach (var item in Model)
    {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.CauseTitle)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Catagory.CatagoryTitle)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Description)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Author)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.DatePosted)
        </td>
        <td>
            <img src="@item.ImageURL" alt="Alternate Text" />
        </td>

此示例的元素显示在 Chrome 开发人员中。在这种情况下,这是正确的文件路径。

我在数据库中查看了 Causes 表,并且 ImageUrl 列的值遵循此模式(如预期的那样):~/Content/[Cause Title]/[Image Title].jpg。

我查看了类似问题的所有其他答案,但找不到适合我的解决方案。任何帮助,将不胜感激。谢谢

【问题讨论】:

  • 图片不显示是什么意思?当视图加载时,您在调试器中看到了什么?
  • 感谢您的回复。在浏览器中,我看到后跟“urlPath”的通用图像缩略图。在 Visual Studio 中,当我明确说明路径时,即编写“~/Content/[Cause Title]/[Image Title].jpg”。当我将鼠标悬停在屏幕上时,我可以在屏幕上看到 img。当我使用 @item.ImageUrl (这是字符串形式的相同路径)时,当我将鼠标悬停在它上面时,我得到“没有可用的图像”,并且无法找到文件。但是当我成功显示它时,我已经检查过数据库表中的字符串与 img 标记上的 scr="" 中的字符串相同。干杯
  • 你需要检查渲染页面的html,看看图像url的输出是如何构建的,肯定有问题。
  • 检查实际的 rendered 值 - 例如background-image 等的引用 url 在浏览器中查看源代码和开发工具(特别是网络选项卡并查找 404s)
  • 波浪号 (~) 在客户端路径中无效

标签: asp.net asp.net-mvc image


【解决方案1】:

如下所示,将您的最终 td 更改为使用 @Url.Content。这总是给出一个相对路径。

<td>
       <img src="@Url.Content(item.ImageURL)" alt="Alternate Text" />
</td>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    相关资源
    最近更新 更多