2012-08-03 29 views
1

我有一個窗體,我想在其中一個@ Html.TextBox元素上禁用所需的驗證。前端如下:禁用MVC中的@ Html.TextBox驗證

@model Models.NewUser 

@using (Html.BeginForm("Register", "Account")) 
{ 
    <div class="field"> 
     <span class="textOverField absolute em1-2" style="top:6px;left:4px;">Key</span> 
     @Html.TextBox("SchoolGroupKey", "", new { @class = "textField" }) 
    </div> 
    <div class="field"> 
     <span class="textOverField absolute em1-2" style="top:6px;left:4px;">Name</span> 
     @Html.TextBox("Names", "", new { @class = "textField" }) <div class="absolute validationMessage">@Html.ValidationMessageFor(u => u.Names)</div> 
    </div> 
    <div class="field"> 
     <span class="textOverField absolute em1-2" style="top:6px;left:4px;">Last Name</span> 
     @Html.TextBox("LastNames", "", new { @class = "textField" }) <div class="absolute validationMessage">@Html.ValidationMessageFor(u => u.LastNames)</div> 
    </div> 
    <div class="em0-9" style="margin-bottom:20px;"> 
     <input class="submitButton cursorHand" style="margin-top:10px;" type="submit" value="Registrarme" /> 
    </div> 
} 

而對於模型的代碼如下:

public class NewUser 
{ 
    [Required(ErrorMessage = "Name required")] 
    public string Names { get; set; } 

    [Required(ErrorMessage = "Last name required")] 
    public string LastNames { get; set; } 

    public System.Guid SchoolGroupKey { get; set; } 
} 

我猜的@ Html.TextBox有一個默認的驗證,即使我不t指定它。有沒有辦法刪除它?我嘗試刪除html標籤data-val-required和data-val,但仍然沒有結果。

由於

回答

1

Guid是表現爲一個簡單的類型(就像intDateTime)的結構。因此它是自動驗證的。如果您想要制定解決方法,請將您的房產類型從Guid更改爲可空的Guid?。例如:

public System.Guid? SchoolGroupKey { get; set; } 

當然,你將有當您使用此屬性,訪問GUID值throught可空類型的Value屬性更改的地方。

如果映射失敗,您將不會收到任何驗證錯誤 - 只需nullSchoolGroupKey屬性內的值。

+0

它不應該抱怨SchoolGroupKey,因爲它沒有標記爲必需的。它應該只是通過一個新的Guid到行動方法。 – Gromer 2012-08-03 23:09:15

+0

你有沒有試過把錯誤的值傳遞給像'int'或'Guid'這樣的簡單類型?當然,它會返回一個驗證錯誤..這是映射這些類型和參考之間的差異.. – 2012-08-03 23:10:50

+1

從來沒有想過它是可以在模型中爲空,讓我檢查它,並返回給你,如果這項工作 – triangulito 2012-08-03 23:13:35