【发布时间】:2023-03-07 15:00:01
【问题描述】:
我正在开发一个 MVC/EF Web 应用程序。在其中一种形式中,我编辑了一个模型。该模型有一个图像字段(public byte[] BioPhoto)
当我将图像上传到该字段并保存数据时,ModelState.IsValid 是 false,因为在 ModelState 中 BioPhoto 属性是 null。请注意,模型中的 BioPhoto 已加载图像数据。
我尝试使用以下代码将图片注入 ModelState,但 ModelState.IsValid 仍然是 false
public ActionResult Edit([Bind(Include = "BusinessId,Name,About,Phone,TollFree,FAX,Email,Bio,BioPhoto")] Business business)
{
if (System.IO.File.Exists("image.jpg"))
{
business.BioPhoto = System.IO.File.ReadAllBytes("image.jpg");
ModelState.SetModelValue("BioPhoto",
new ValueProviderResult(business.BioPhoto, "", System.Globalization.CultureInfo.InvariantCulture));
}
if (ModelState.IsValid)
{
db.Entry(business).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(business);
}
我做错了什么。这个问题有没有更好的解决方案?
我在 SO 中阅读了几个答案,但不知道如何解决我的问题。
这是我的模特
public class Business
{
public int BusinessId { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
[Required]
public Address address { get; set; }
[Required]
[StringLength(20)]
public string Phone { get; set; }
[StringLength(20)]
public string TollFree { get; set; }
[StringLength(20)]
public string FAX { get; set; }
[Required]
[StringLength(50)]
public string Email { get; set; }
[Required]
[StringLength(100)]
public string WebSite { get; set; }
[Required]
public string About { get; set; }
[Required]
public string Bio { get; set; }
[Required]
public byte[] BioPhoto { get; set; }
}
我的观点
<div class="form-group">
@Html.LabelFor(model => model.BioPhoto, "BIO Photo (Best Size: 350 x 450)", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
<form enctype="multipart/form-data">
<div class="form-group" style="width:400px">
<input id="BioPhoto" type="file" multiple class="file" data-overwrite-initial="false" />
</div>
</form>
@Html.ValidationMessageFor(model => model.BioPhoto, "", new { @class = "text-danger" })
</div>
</div>
【问题讨论】:
-
显示类及其所有验证属性。
-
我添加了模型
-
你如何从客户端上传模型中的图像
-
我正在使用引导文件输入。我加我查看
-
如果不需要,为什么要标记
Required?
标签: c# asp.net-mvc entity-framework model-view-controller