Сначала я использую 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.