public async Task <IActionResult> EditForumEndpoint(string EndpointId) { var endpoint = await(from e in DBContext.ForumEndpoints.Include(f => f.PinnedFiles) where e.Id.ToString() == EndpointId select e).FirstOrDefaultAsync(); var model = new EditForumEndpointViewModel() { EndpointName = endpoint.Name, EndpointId = endpoint.Id.ToString(), EndpointText = endpoint.Text.Replace("<br>", "\n"), PinnedFiles = endpoint.PinnedFiles, CreatorEmail = endpoint.CreatorEmail }; return(View(model)); }
public async Task <IActionResult> EditForumEndpoint(EditForumEndpointViewModel model) { if (ModelState.IsValid) { var endpoint = await(from e in DBContext.ForumEndpoints.Include(f => f.PinnedFiles) where e.Id.ToString() == model.EndpointId select e).FirstOrDefaultAsync(); if ((model.EndpointText.IndexOf("<script>") != -1) || (model.EndpointText.IndexOf("</script>") != -1)) { ModelState.AddModelError("scripts", "Теги <script> запрещены!"); return(View(model)); } DBContext.ForumEndpoints.Update(endpoint).Entity.Name = model.EndpointName; var safeText = model.EndpointText.Replace("<script>", "");//на всякий safeText = safeText.Replace("\n", "<br>"); DBContext.ForumEndpoints.Update(endpoint).Entity.Text = safeText; if (model.UploadedFiles != null) { string outfolder; if ((endpoint.PinnedFiles != null) && (endpoint.PinnedFiles.Count > 0)) { outfolder = endpoint.PinnedFiles[0].Path.Replace(endpoint.PinnedFiles[0].Name, String.Empty); } else { outfolder = environment.WebRootPath + "/ForumFiles/EPFiles/" + model.EndpointName + "_" + System.DateTime.Now.ToString("s").Replace(":", "-") + "/"; if (!Directory.Exists(outfolder)) { Directory.CreateDirectory(outfolder); } } foreach (IFormFile file in model.UploadedFiles) { if (file.Length >= 10485760) { ModelState.AddModelError("FileTooBig", "Нельзя загружать файлы свыше 10 Мегабайт."); return(View(model)); } var outpath = outfolder + file.FileName; using (var fileStream = new FileStream(outpath, FileMode.Create)) { await file.CopyToAsync(fileStream); } var efile = new EForumFile() { Name = file.FileName, Path = outpath, TypeOfParent = 1, ForumEndpoint = endpoint }; DBContext.ForumFiles.Add(efile); DBContext.ForumEndpoints.Update(endpoint).Entity.PinnedFiles.Add(efile); } } await DBContext.SaveChangesAsync(); return(RedirectToAction("ForumEndpoint", new { EndpointId = model.EndpointId })); } return(View(model)); }