在ModelState.IsValid中,在HttpPostedFileBase中使用RegularExpression



我有一个使用htmlhelper上传图像字段的表单,但在控制器中,它总是使用ModelState.IsValid返回false,我不知道我的代码出了什么问题。你能帮我吗?这是我的密码。

Form.cshtml

@using (Html.BeginForm("AddonSaveLayout", "Admin", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(x => x.AddonLayoutForm.AddonSetup.Id)
<div class="box box-primary">
<div class="box-body">
<div class="form-group">
<label>Upload Image </label>
@Html.TextBoxFor(x => x.AddonLayoutForm.AddonSetup.ImagePath, new { type = "file", @accept = "image/jpg, image/jpeg, image/png" })
@Html.ValidationMessageFor(model => model.AddonLayoutForm.AddonSetup.ImagePath, "", new { @class = "text-danger" })
</div>
</div>
<div class="box-footer">
@Html.ActionLink("Back", "AddonSetup", null, new { @class = "btn btn-warning" })
<button type="submit" class="btn btn-primary" id="submitAddCatBtn">Save</button>
</div>
</div>
}

型号.cs

[Required(ErrorMessage = "Please select file.")]
[RegularExpression(@"([a-zA-Z0-9s_\.-:])+(.png|.jpg|.jpeg)$", ErrorMessage = "Only Image files allowed and should be 5MB or lower.")]
public HttpPostedFileBase ImagePath { get; set; }

Controller.cs

if (!ModelState.IsValid)
{
string messages = string.Join("; ", ModelState.Values
.SelectMany(x => x.Errors)
.Select(x => x.ErrorMessage));
var TicketDesc = db.TicketDescriptions.ToList();
model.AddonLayoutForm.TicketDescriptions = TicketDesc;
return View("AddonForm", model);
}

我建议在控制器方法上设置一个断点,并检查ModelState,以查找导致无效ModelState的有问题的属性。

相关内容

  • 没有找到相关文章

最新更新