1
我有一个模型与ImagePath和PDFPath属性。上传不同的文件类型为不同的模型属性
当他们点击保存时,它会在控制器中调用POST操作方法。我需要检查他们是否只上传图像文件和PDF文件。如果他们比上传的文件类型,这些以外的东西我想设置的ModelState错误有以下:
ModelState.AddModelError("ImagePath", "Only image files are accepted");
ModelState.SetModelValue("ImagePath", new ValueProviderResult(null, null, null));
的问题是我需要设置在AddModelError正确的属性。问题在于它们可能会在ImagePath或PDFPath中放置一个* .doc文件,因此我不知道哪一个报告为错误字段。
我该如何确保他们只上传角蛋白文件类型?正则表达式?
谢谢
编辑:这是我的控制器代码。
[AcceptVerbs(HttpVerbs.Post)]
[Authorize]
public ActionResult Create([Bind(Prefix = "", Exclude = "ID")] News item)
{
string imageUrl = "";
string pdfurl = "";
try
{
News.CheckForErrors(item);
}
catch (RulesException ex)
{
ex.AddModelStateErrors(ModelState, null);
}
foreach (string inputTagName in Request.Files)
{
HttpPostedFileBase file = Request.Files[inputTagName];
if (file.ContentLength > 0)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("/uploads"), Path.GetFileName(file.FileName));
if (Path.GetExtension(file.FileName).ToLower() != ".jpg" || Path.GetExtension(file.FileName).ToLower() != ".pdf")
{
//HELP! - Which model has the property error ImagePath/PDFPath?
ModelState.AddModelError("ImagePath", "Only JPG image files are accepted");
ModelState.SetModelValue("ImagePath", new ValueProviderResult(null, null, null));
break;
}
imageUrl = "/uploads/" + file.FileName;
}
}
if (!ModelState.IsValid)
{
return View(item);
}
try
{
item.Save(User.Identity.Name);
}
catch (Exception x)
{
}
return RedirectToAction("Index");
}
什么是ImagePath的(和PDFPath)的财产?它是一个文本框或? – 2009-06-23 15:51:32
是的。 – Jon 2009-06-23 18:40:27