我有一個數據優先的設置,所以我的模型是由我的數據庫中的實體框架生成的,並且沒有默認[必需的]註釋。我有一個有三個字段的簡單表格。一個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