codegeekalpha Ответов: 1

Ошибка проверки отображается при загрузке страницы в ASP.NET MVC


Когда я нажимаю на URL-адрес для добавления новой формы записи в asp.net mvc. При загрузке страницы отображаются ошибки проверки. 

Ошибки выделены красным цветом и на самом деле должны быть вызваны кнопкой отправки.

Имя пользователя обязательно
Название обязательно
Описание обязательно

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

Добавить Пост Контроллер

public ActionResult AddPost(ForumPost post)
        {
            AdminObserver observer1 = new AdminObserver();

            ActivityObserver observer2 = new ActivityObserver();

            post.PostedOn = DateTime.Now;

            if (!ModelState.IsValid)
            {
                return View(post);
               
            }
          
                using (AppDbContext db = new AppDbContext())
                {
                    try
                    {
                        db.ForumPosts.Add(post);
                        db.SaveChanges();
                    }
                    catch (DbEntityValidationException e)
                    {

                        Console.WriteLine(e);
                    }
                }
                TempData["SM"] = "You have added a new Record!";
                ForumNotifier notifier = new ForumNotifier();

                //ForumNotifier notifier = new ForumNotifier();


                notifier.Subscribe(observer1);

                notifier.Subscribe(observer2);

                notifier.Notify(post);
           
            return View("AddPost", post);
        }


Добавить форму записи
<h2>AddPost</h2>
@if (TempData["SM"] != null)
{
    <div class="alert alert-success">
        @TempData["SM"]
    </div>
}

@using (Html.BeginForm("AddPost","Home")) 
{
    @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>

        <h4>@ViewBag.Message</h4> 

        <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 Ответов

Рейтинг:
7

Bryian Tan

Я думаю, что этот метод должен иметь атрибут post. Не знаю, как строится ваш код, но для этого действия должны быть get и post

// GET: AddPost
        public ActionResult AddPost()
        {
            return View();
        }

  // POST: AddPost
 [HttpPost]
        public ActionResult AddPost(ForumPost post)
        {
            ....
        }