Представление MVC не создается с проверкой из базы данных - PullRequest
0 голосов
/ 17 мая 2019

Сначала я использую MVC 5 с EF6 и базой данных .. У меня есть две таблицы, таблица A и B, обе с необнуляемыми полями. Я проделал одну и ту же процедуру для них обоих, создал контроллер и представление, но по какой-то причине HTML-код представления для создания записей для таблицы B не генерирует проверки клиента.

Таблица A:

CREATE TABLE [dbo].[A](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [CodA] [int] NOT NULL,
    [Volume] [decimal](15, 2) NOT NULL,
    [CreationDate] [datetime] NOT NULL,
 CONSTRAINT [A_pk] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)

Таблица B:

CREATE TABLE [dbo].[B](
    [ID] [smallint] IDENTITY(1,1) NOT NULL,
    [Codigo] [varchar](3) NOT NULL,
    [Iso2] [varchar](2) NOT NULL,
    [Iso3] [varchar](3) NOT NULL,
    [Designation] [nvarchar](128) NOT NULL,
 CONSTRAINT [B_pk] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)

HTML для поля в представлении для создания записи в таблице A:

<input class="form-control text-box single-line" data-val="true" data-val-number="The field Volume must be a number." data-val-required="The Volume field is required." id="Volume" name="Volume" type="text" value="">

Код из файла создания cshtml для таблицы A:

@Html.EditorFor(model => model.Volume, new { htmlAttributes = new { @class = "form-control" } })

HTML для поля в представлении для создания записи в таблице B:

<input class="form-control text-box single-line" id="Codigo" name="Codigo" type="text" value="">

Код из файла создания cshtml для таблицы B:

@Html.EditorFor(model => model.Iso3, new { htmlAttributes = new { @class = "form-control" } })

Контроллер для действия создания для таблицы A

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(A a)
        {
            if(ModelState.IsValid)
            {
                db.A.Add(a);
                db.SaveChanges();
                return RedirectToAction("Index", "Backoffice");
            }

            return View(a);
        }

Контроллер для действия создания для таблицы B

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(B b)
        {
            if (ModelState.IsValid)
            {
                db.B.Add(b);
                db.SaveChanges();
                return RedirectToAction("Index", "Backoffice");
            }

            return View(b);
        }

Контроллеры идентичны.

В таблице A представление показывает сообщение проверки для необнуляемых полей, в то время как в таблице B оно попадает в контроллер и вызывает исключение в методе SaveChanges.

1 Ответ

0 голосов
/ 21 мая 2019

Я думаю, вам нужно добавить атрибут проверки данных [Required(AllowEmptyStrings = false)] в свойства вашего класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...