我有一个数据优先的设置,所以我的模型是由我的数据库中的实体框架生成的,并且没有默认[必需的]注释。我有一个有三个字段的简单表格。一个ID和两个基于VARCHAR /文本的字段。如何关闭MVC表单验证
无论我尝试什么,我都无法获取CRUD表单以停止验证。我在Web.config中禁用了,我将[ValidateInput(false)]添加到控制器的Create()方法中,但没有任何效果。我设置了@ Html.ValidationSummary为false,
这是基本的观点:
@using (Html.BeginForm()) {
@Html.ValidationSummary(false)
<fieldset>
<legend>CallType</legend>
<div class="editor-label">
@Html.LabelFor(model => model.CALLTYPE)
</div>
<div class="editor-field">
@Html.TextBox("calltype", "", new { style = "width: 50px;" })
@Html.ValidationMessageFor(model => model.CALLTYPE)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.DESCRIPTION)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DESCRIPTION)
@Html.ValidationMessageFor(model => model.DESCRIPTION)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
模型(由框架生成):
public partial class CALLTYPES2
{
public int ID { get; set; }
public string CALLTYPE { get; set; }
public string DESCRIPTION { get; set; }
}
即使我在各插入一个字符字段,它仍然说:“值'x'无效” (我留下验证信息,以便我可以看到发生了什么)。
我该怎么办?以后我将如何验证这些字段 - 我是否可以将[必需的]添加到模型生成的代码?如果我从数据库重新生成模型会怎么样?
这是否与控制器中的模型状态有关?
[HttpPost]
public ActionResult Create(CALLTYPES2 calltype)
{
if (ModelState.IsValid)
{
db.CALLTYPES2.Add(calltype);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(calltype);
}
不知道我失踪了什么,我看过的教程也没有多少亮点。感谢您的回应,并为我的无知道歉。
UPDATE
找到我的错误 - 在该方法中的对象名称“CALLTYPE”创建()是相同的表单字段“CALLTYPE”的名称/ ID。我想活页夹试图将字符串“calltype”绑定到对象“calltype”。将它重命名为:
public ActionResult Create(CALLTYPES2 ctype)
现在它在编辑和创建Windows中均可用。 “ctype”与“calltype”不冲突。
感谢您的回复。但是,添加隐藏字段不会有任何影响。那么还没有ID,所以我把默认的,但没有运气。我发现Model.IsValid不是true,传入的calltype对象到达控制器时为null。试图找出原因。看起来像一些有约束力的问题? – CyMark