2
我有一個包含一些控件的形式 - 沒有任何幻想:MVC CheckBoxFor造成不引人注目的驗證被繞過
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<fieldset>
<legend>EmployeeViewModel</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Employee.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Employee.Title)
etc.....
UPDATE 我的視圖模型:
public class EmployeeCreateViewModel
{
public EmployeeCreateModel Employee { get; set; }
..etc
我的員工型號:
public class EmployeeCreateModel
{
[Required]
public string Title { get; set; }
[DisplayName("Job Title")]
[Required]
public string JobTitle { get; set; }
public bool Active { get; set; }
...etc
問題 - 我正在使用不顯眼的驗證工作正常直到我添加一個複選框到窗體。無論複選框狀態如何,都會提交表單,繞過客戶端驗證,並且錯誤會被服務器端驗證捕獲。這是我的複選框:
<div class="editor-label">
@Html.LabelFor(model => model.Employee.Active)
</div>
<div class="editor-field">
@Html.CheckBoxFor(model => model.Employee.Active)
</div>
複選框模型屬性不是必填字段,所以它並不需要驗證,我可以看到它有一個有效的真/假值,當它到達控制器方法。
爲什麼會發生這種情況,我該如何解決?
向我們展示您的模型。 –
所以你不希望它在控制器中顯示錯誤,如果它沒有選中? – Andrew
@Andrew - 傳遞給控制器的值如果未選中,則爲false – markpsmith