模型状态为假,错误消息显示 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
的值是 null
和 ModelState
无效,因为 [Required]
属性。
包括 属性 的控件,以便在您提交时将其值发送到控制器,例如
@Html.TextBoxFor(model => model.ImageUrl) // or @Html.HiddenFor()
[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
的值是 null
和 ModelState
无效,因为 [Required]
属性。
包括 属性 的控件,以便在您提交时将其值发送到控制器,例如
@Html.TextBoxFor(model => model.ImageUrl) // or @Html.HiddenFor()