2012-12-08 56 views
1

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

回答

0

您忘記在您的表單中包含ID字段。你可以把它作爲一個隱藏字段:

@Html.HiddenFor(model => model.ID) 

現在的ID屬性的值將被髮送到時提交表單時,默認模式粘結劑不應該抱怨服務器。

+0

感謝您的回覆。但是,添加隱藏字段不會有任何影響。那麼還沒有ID,所以我把默認的,但沒有運氣。我發現Model.IsValid不是true,傳入的calltype對象到達控制器時爲null。試圖找出原因。看起來像一些有約束力的問題? – CyMark