1

我已经为应用程序实现了一个图像上传子操作表单。我有一个强类型的局部视图。

public class ImageViewModel{
 public long ImageId{get;set;}
 public long OwnerId{get;set;}
 public string ImageName{get;set;}
 public string ImageDescription{get;set;}
 public IEnumerable<HttpPostedFileBase> Files { get; set; }
}

Razor 代码如下所示:

<form action="UploadImage" method="post" enctype="multipart/form-data">
  @Html.ValidationSummary()
  @Html.HiddenFor(m => m.OwnerId)
  @Html.HiddenFor(m => m.ImageId)
  @HtmlEditorFor(m=>m.ImageName)
  <input type="file" name="Files" id="file0" />
  <input type="submit" value="Upload" />
 </form>

这是问题所在。当表单被回发时,模型已经上传了文件和 ImageName 值。但是缺少使用 HiddenFor 绑定的值。

[HttpPost]
public ActionResult UploadImage(ImageViewModel model)
{ ...}

我已经检查了 HTML 源代码。隐藏字段使用与模型命名的属性匹配的 ID 和名称进行更正。在回邮时,我检查了原始请求。两个隐藏字段都在表单集合中进行。但是模型绑定并没有在属性中设置这些字段的值。这些隐藏字段有什么我遗漏的吗?

谢谢

4

0 回答 0