J'ai un modèle avec les propriétés ImagePath et PDFPath.Téléchargement de différents types de fichiers pour différentes propriétés de modèle
Lorsque vous cliquez sur Enregistrer, cela appelle la méthode d'action POST dans le contrôleur. Je dois vérifier qu'ils n'ont téléchargé que des fichiers image et des fichiers pdf. Si elles ont téléchargé quelque chose autre que ces types de fichiers que je veux définir une erreur de ModelState ce qui suit:
ModelState.AddModelError("ImagePath", "Only image files are accepted");
ModelState.SetModelValue("ImagePath", new ValueProviderResult(null, null, null));
Le problème est que je dois définir les propriétés correctes dans le AddModelError. Le problème étant qu'ils auraient pu mettre un fichier * .doc dans ImagePath ou PDFPath donc je ne sais pas lequel signaler comme champ d'erreur.
Comment puis-je également m'assurer qu'ils ne téléchargent que les types de fichiers Ceratin? RegEx?
Merci
EDIT: Voici mon code de contrôleur.
[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");
}
Qu'est-ce que ImagePath (et PDFPath) propriété? Est-ce un TextBox ou ? –
Yup exactement cela. – Jon
Pouvez-vous poster votre code de contrôleur ici? –