当我尝试创建新记录而不选择任何文件时,它给了我 从类型“ System.String”到类型“ System.Web.HttpPostedFileBase”的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换错误。我想创建带有或不带有用户选择文件的记录。如果HttpPostedFileBase [] null模型状态应该有效。我检查了模型中的HttpPostedFileBase是否也没有必需的验证。
[HttpPost]
public ActionResult NewTheme(ThemeModel themeModel, ColorItem colorItem, ImageItem imageItem, Dictionary<string, HttpPostedFileBase[]> selectedImageList)
{
try
{
if (ModelState.IsValid)
{
}
}
}
当字典 HttpPostedFileBase 也为空时,我希望能够使ModelState有效
答案 0 :(得分:0)
您不能直接设置ModelState.IsValid
,因为它是仅检查模型错误集合的派生属性。但是,您可以添加自己的模型错误,例如:
ModelState.AddModelError("selectedImageList", "File is mandatory");
ModelState.IsValid将返回false。
答案 1 :(得分:0)
ModelState.IsValid 是每个字段验证的聚合。您可以单独控制每个字段的有效性。
可以使用这两种方法将字段设置为有效:
ModelState.ClearValidationState("Password");
ModelState.MarkFieldValid("Password");
需要同时使用两者,因为没有第一个的第二个会给出一个错误,指出状态已经被标记。
要将字段设置为无效,只需使用 ModelState.AddModelError() 方法