codegeekalpha Ответов: 1

Ошибка проверки сущности в ASP.NET MVC


Я получаю ошибку проверки сущности при нажатии на страницу AddNewPost. обычно ошибка проверки возникает при отправке формы, но когда я нажимаю на страницу, где на самом деле находится форма отправки, я получаю ошибку проверки сущности. Когда я отлаживаю код, чтобы проверить, какие объекты базы данных создают проблемы. я видел, что требуются три сущности. но эти сущности должны были вызвать такую ошибку, когда я отправляю форму. каковы возможные решения, когда эти ошибки возникают при переходе на страницу формы.

Что я уже пробовал:

Ошибка, которую я получаю
Server Error in '/' Application.

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details


Визуальная Студия Изображения Отладки

http://imgur.com/a/CbpEM

Контроллеры индексируют и добавляют пост
public ActionResult Index()
       {
           AdminObserver observer1 = new AdminObserver();

           ActivityObserver observer2 = new ActivityObserver();

          // ForumNotifier notifier = new ForumNotifier();
           ForumNotfier notifier = new ForumNotfier();


           notifier.Subscribe(observer1);

           notifier.Subscribe(observer2);


           return View();
           //return View();
       }

       public ActionResult AddPost(ForumPost post)
       {
           post.PostedOn = DateTime.Now;
           using (AppDbContext db = new AppDbContext())
           {
               try {
               db.ForumPosts.Add(post);
               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;


               }
           }
           ViewBag.Message = "Post submitted successfully!";
           ForumNotfier notifier = new ForumNotfier();
           notifier.Notify(post);
           return View("Index", post);
       }


Forumpost в модели
namespace observer.Models
{
    [Table("ForumPosts")]
    public class ForumPost
    {
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
            public int Id { get; set; }
            [Required]
            [StringLength(20)]
            public string UserName { get; set; }
            [Required]
            [StringLength(100)]
             public string Title { get; set; }
            [Required]
            [StringLength(100)]
            public string Description { get; set; }
            [Required]
            public DateTime PostedOn { get; set; }
    }

Вид AddPost

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>ForumPost</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.UserName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.UserName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.UserName, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Title, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Description, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Description, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.PostedOn, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.PostedOn, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.PostedOn, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

1 Ответов

Рейтинг:
0

Bryian Tan

1. Убедитесь, что у вас есть следующая строка в файле web. config в разделе appSettings

<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />

2. Убедитесь, что у вас есть следующее В _Layout.cshtml (я предположил, что ваша главная страница по умолчанию), поместите ее под jQuery/@Scripts.Render("~/bundles/jquery"). Надеюсь, у вас такая же настройка.

@Scripts.Render("~/bundles/jqueryval")