【问题标题】:MVC view not being generated with validation from the database未通过数据库验证生成 MVC 视图
【发布时间】:2019-05-17 16:25:16
【问题描述】:

我首先使用带有 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
)

视图中的字段的 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="">

表 A 的 cshtml 创建文件中的代码:

@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="">

表 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 方法中引发异常。

【问题讨论】:

    标签: c# asp.net-mvc entity-framework validation model-view-controller


    【解决方案1】:

    我认为您需要添加数据验证属性 [Required(AllowEmptyStrings = false)] 到你的类属性。

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 2014-01-12
      • 2012-03-21
      • 1970-01-01
      • 2016-08-06
      相关资源
      最近更新 更多