【问题标题】:Image coming as null from view to controller in ASP.NET在 ASP.NET 中从视图到控制器的图像为空
【发布时间】:2021-05-21 07:58:41
【问题描述】:

我有一个小的 ASP NET Web 应用程序,它从视图中获取描述和图像,当我添加描述和图像时,我单击提交按钮,描述很好,但图像始终为空,我不知道为什么。这是我的看法:

@model List<aspnet_client.Models.DataModel>
@{
    ViewBag.Title = "AddData";
}

<h2>Añade nuevos registros</h2>
@using (Html.BeginForm("AddData", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.ValidationSummary(true, "", new { @class="text-danger"})
        <div class="form-inline">
            @if (Model != null && Model.Count > 0)
            {
                var iterator = 0;
                foreach (var i in Model)
                {
                    <div class="data-element">
                        <div class="description">
                            @Html.TextBoxFor(x => x[iterator].Description, new { @class = "form-control", placeholder = "Descripción" })
                            @Html.ValidationMessageFor(model => model[iterator].Description, "", new { @class="text-danger"})
                        </div>
                        <br />
                        <div>
                            <input type="file" name="Model.Image" id="Image" onchange="fileCheck(this);" />
                        </div>
                    </div>
                    <br />
                    iterator++;
                }
            }
     </div>
    <button type="submit" class="btn btn-success">Añadir Registros</button>
}

如您所见,我在表单中使用了 new { enctype = "multipart/form-data" },所以这不是问题。 这是模型:

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace aspnet_client.Models
{
    /// <summary>
    /// The DataModel class
    /// </summary>
    public class DataModel
    {
        /// <summary>
        /// Gets or sets the identifier.
        /// </summary>
        /// <value>
        /// The identifier.
        /// </value>
        public int Id { get; set; }

        /// <summary>
        /// Gets or sets the description.
        /// </summary>
        /// <value>
        /// The description.
        /// </value>
        [Required(ErrorMessage = "Se requiere una descripción")]
        [DisplayName("Descripción")]
        public string Description { get; set; }

        /// <summary>
        /// Gets or sets the image.
        /// </summary>
        /// <value>
        /// The image.
        /// </value>
        [Required(ErrorMessage = "Se requiere una imagen")]
        [DisplayName("Imagen")]
        public byte[] Image { get; set; }
    }
}

行动:

using aspnet_client.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace aspnet_client.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpGet]
        public ActionResult AddData()
        {
            var records = new List<DataModel>();

            // Los registros se añadirán de 5 en 5 basado en los requerimientos de esta prueba
            var recordLimit = 5;

            for(int a = 0; a < recordLimit; a++)
            {
                records.Add(new DataModel());
            }

            return View(records);
        }

        [HttpPost]
        public ActionResult AddData(List<DataModel> records)
        {
            return View(records);
        }

        [HttpGet]
        public ActionResult GetDataRecords()
        {
            return View();
        }
    }
}

图片类型为 byte[] 会不会有问题??

任何帮助将不胜感激!

【问题讨论】:

  • 你能展示你的动作吗?
  • 刚刚更新了帖子。正如您所看到的,该操作没有什么特别之处,只是一直将图像接收为 null,以下建议有效,但我必须遍历请求记录来分配使代码看起来很脏的图像。不确定是否有更好的解决方案。
  • 你试过用 吗?
  • 和 public IFormFile ImageFile { get;放; } 而不是 byte[]
  • 这是 asp.net 而不是 asp.net 核心,所以标签助手将无法工作

标签: c# asp.net-mvc image


【解决方案1】:

您可以使用 Request 对象来获取图像,但请确保在控制器中将 img 的 name 属性作为 Image。

HttpPostedFileBase file = Request.Files["Image"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多