c# - 未通过数据库验证生成 MVC 视图
问题描述
我首先使用带有 EF6 和数据库的 MVC 5。我有两个表,表 A 和 B,它们都有不可为空的字段。我对它们都做了相同的过程,创建了控制器和视图,但由于某种原因,为表 B 创建记录的视图的 html 不会生成客户端验证。
表 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
)
用于在表 A 中创建记录的视图中的字段的 Html:
<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="">
表 A 的 cshtml 创建文件中的代码:
@Html.EditorFor(model => model.Volume, new { htmlAttributes = new { @class = "form-control" } })
用于在表 B 中创建记录的视图中的字段的 Html:
<input class="form-control text-box single-line" id="Codigo" name="Codigo" type="text" value="">
表 B 的 cshtml 创建文件中的代码:
@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 方法中引发异常。
解决方案
我认为您需要将数据验证属性添加
[Required(AllowEmptyStrings = false)]
到您的类属性中。
推荐阅读
- c# - 如何在sql查询之间使用日期时间的最后一个条目?
- go - 在 golang 中将 12 小时格式转换为 24 小时格式时间
- parsing - ANTLR4 解析器生成:条件表达式的简单语法问题
- python-3.6 - 在烧瓶中向服务器机器发送和接收数据
- python - 如何在for循环中进行多进程
- javascript - Ionic 3:清除 Windows 平台的 InAppBrowser 缓存
- vba - 提示用户打开工作簿并另存为新工作簿
- java - HttpClient SocketTimeoutException 处理
- android - 如何定义返回 Kotlin 中 RadioButton 的当前值的属性?
- java - 在线程“main”java.lang.ArrayIndexOutOfBoundsException 中获取错误异常:0