首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Modelstate。AddmodelError未显示

Modelstate。AddmodelError未显示
EN

Stack Overflow用户
提问于 2014-10-30 17:19:08
回答 1查看 728关注 0票数 0

我和addModelError谈了个小麻烦。但现在它正在显现出来。是的,我在该行上设置了断点,它到达了该行,但现在显示出来了。

以下是actioni方法:

代码语言:javascript
复制
[HttpPost]        
        public ActionResult EditPhotos(ImageUploadModel ImageUpload)
        {
            var validImageTypes = new string[]
            {
        "image/gif",
        "image/jpeg",
        "image/pjpeg",
        "image/png"
            };
            try
            {

                if (ImageUpload.file == null && ImageUpload.file.ContentLength == 0)
                {
                    ModelState.AddModelError("file", "This field is required");

                }


                else if (!validImageTypes.Contains(ImageUpload.file.FileName.Substring(ImageUpload.file.FileName.LastIndexOf('.'))))
                {
                   ModelState.AddModelError("file", "Please upload Your Photo of type: " + string.Join(", ", validImageTypes));
                   return View(ImageUpload);                   
                }

                else if (ImageUpload.file != null && ImageUpload.file.ContentLength > 0)
                {
                    var DirSeparator = Path.DirectorySeparatorChar;
                    var fileName = Path.GetFileName(ImageUpload.file.FileName);
                    //var fileName2 = Path.GetFileName(@"\\Cyclist3.jpg");
                    var path = Server.MapPath(@"\\Images\\profile" + DirSeparator + fileName.Replace('+', '_'));
                    ImageUpload.file.SaveAs(path);
                    ViewBag.Message = "File has been uploaded successfully";
                    ModelState.Clear();
                }


            }
            catch (FileLoadException ex)
            {

                throw;
            }



            if (ModelState.IsValid)
            {
                string username = User.Identity.Name;
                // Get the userprofile
                UserProfile user = db.userProfiles.FirstOrDefault(u => u.UserName.Equals(username));

                // Update fields

                byte[] uploadedFile = new byte[ImageUpload.file.ContentLength];              
                ImageUpload.file.InputStream.Read(uploadedFile, 0, ImageUpload.file.ContentLength);
                user.file = uploadedFile;
                user.ImageMimeType = ImageUpload.file.ContentType;

                db.Entry(user).State = EntityState.Modified;

                try
                {
                    db.SaveChanges();
                }
                catch (DbEntityValidationException e)
                {
                    foreach (var eve in e.EntityValidationErrors)
                    {
                        Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
                            eve.Entry.Entity.GetType().Name, eve.Entry.State);
                        foreach (var ve in eve.ValidationErrors)
                        {
                            Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
                                ve.PropertyName, ve.ErrorMessage);
                        }
                    }
                    throw;
                }

            }

            return RedirectToAction("Edit", routeValues: new { controller = "Account", activetab = "tabs-2" });
        }

这是视图:

代码语言:javascript
复制
 <div class="lifile">
                    <div id="upload-choices">
                        <div class="editor-label">


                            @Html.ValidationMessageFor(model => model.file)

                        </div>

                    </div>
                  </div>

因此,举个例子:

代码语言:javascript
复制
{
                       ModelState.AddModelError("file", "Please upload Your Photo of type: " + string.Join(", ", validImageTypes));
                       return View(ImageUpload);                   
                    }

我在AddModelError上放置了一个断点,它到达了该行,但没有显示错误。

谢谢

我试过这个:

查看:

代码语言:javascript
复制
<div class="lifile">
                    <div id="upload-choices">
                        <div class="editor-label">


                            @Html.ValidationMessageFor(model => model.file)
                           @Html.ValidationSummary(true)

                        </div>

                    </div>
                  </div>

动作方法

代码语言:javascript
复制
 else if (!validImageTypes.Contains(ImageUpload.file.ContentType))
                {
                    ModelState.AddModelError(string.Empty, "Please choose either a GIF, JPG or PNG image.");
                    return View(ImageUpload);

                }
EN

回答 1

Stack Overflow用户

发布于 2014-10-30 17:33:03

我相信ModelStateDictionary不会跟在你的RedirectResult上,你应该返回一个ViewResult。

如果您将断点放在AddModelError行上,则该行还没有执行。在下一行设置一个断点,错误应该就在那里。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26649071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档