模型状态为假,错误消息显示 ImageUrl 为空.....这是控制器代码和视图

Model State is false, error message shows the ImageUrl is null.....here is the controller code and view

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include="ArticleId,ArticleAuthorId,IsActive,Name,Desription,ImageUrl")] ArticleDM articledm)
{
  var errors = ModelState
               .Where(x => x.Value.Errors.Count > 0)
               .Select(x => new { x.Key, x.Value.Errors })
               .ToArray();

  if (ModelState.IsValid)
  {
    articledm.ArticleId = Guid.NewGuid();
    db.Article.Add(articledm);                  
    HttpPostedFileBase ArtImgUrl = Request.Files["ArtImgUrl"];
    if (ArtImgUrl != null && ArtImgUrl.ContentLength > 0)
    {
      string fileDatetime = Convert.ToString(System.DateTime.Now.Month
        + "" + System.DateTime.Now.Day + "" 
        + System.DateTime.Now.Year + "" + System.DateTime.Now.Hour + "" 
        +  System.DateTime.Now.Minute + "" + System.DateTime.Now.Second);
      string fileName = ArtImgUrl.FileName;
      articledm.ImageUrl = "~/ArticleImages/" + fileDatetime + fileName;
      ArtImgUrl.SaveAs(Server.MapPath("~/ArticleImages/" + fileDatetime + fileName));
  }     
  db.SaveChanges();
  return RedirectToAction("Index");
}

查看代码为

 @Html.LabelFor(model => model.ArticleAuthorId, "ArticleAuthorId", new { @class = "control-label col-md-2" })
 <div class="form-group">
   @Html.LabelFor(model => model.ImageUrl, new { @class = "control-label col-md-2" })
  <div class="col-md-10">
    <input type="file" name="ArtImgUrl" id="file" />
  </div>
</div>

模型是

public class ArticleDM : ArticleImage
{
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Key]
  public Guid ArticleId { get; set; }
  [ForeignKey("ArticleAuthor")] [Column(Order = 1)]
  public Guid ArticleAuthorId { get; set; }
  public ArticleAuthorDM ArticleAuthor { get; set; }
  public bool IsActive { get; set; }
}

public class ArticleImage
{
  public ArticleImage();
  [Required]
  public string Desription { get; set; }
  [Required]
  public string ImageUrl { get; set; }
  [Required]
  public string Name { get; set; }
}

Model.state=false,调试时的错误代码显示 ImageUrl 值 = null。我做错了什么?

您没有呈现 属性 ImageUrl 的表单控件,只是一个 <label> 元素,所以当您提交时, ImageUrl 的值是 nullModelState 无效,因为 [Required] 属性。

包括 属性 的控件,以便在您提交时将其值发送到控制器,例如

@Html.TextBoxFor(model => model.ImageUrl) // or @Html.HiddenFor()