0

我有一个带有数据注释的模型联系人

[Required(ErrorMessage = "Please enter a Contact Name")]
public string ContactName
  { get; set; }

[Required(ErrorMessage = "Please enter a Region")]
public string Region
  { get; set; }

我将此模型作为另一个模型 ClientModel 中的列表传递

[Required(ErrorMessage = "Please enter a name")]
public string clientname
  {get;set;}

Public List<Contact> contact
  {get;set;}

现在在我看来,我正在像这样绑定我的 ClientModel

@model MyContact.Models.ClientModel

当我提交相应的视图时,只有 clientname 带有验证消息。有一些文本框是从中填充的,List<Contact>但它们不验证。我已经在布局中复制了所需的脚本,还添加了验证摘要。我不明白为什么没有发生验证。


these are my textboxes

<table border="0" id="tbl2" cellspacing="10" cellpadding="0">
 @for (int i = 0; i < Model.ContactList.Count; i++)
  {
  <tr>
   <td>
     @Html.CheckBox("chk1", true, new { @class = "BASESAccountTeamChkBoxItem" })
         </td>                   
   <td>
 @Html.TextBoxFor(m => m.ContactList[i].ContactName, new { style = "width:170px;"})
 @Html.ValidationMessageFor((m => m.ContactList[i].ContactName)

 </td>
<td>
@Html.TextBoxFor(m => m.ContactList[i].Region, new { style = "width:170px;" })
 @Html.ValidationMessageFor((m => m.ContactList[i].ContactName)
 </td>
 <td>
 @Html.TextBoxFor(m => m.ContactList[i].Email, new { style = "width:170px;" })
 @Html.ValidationMessageFor((m => m.ContactList[i].Email) 
 </td>
 <td>
 @Html.TextBoxFor(m => m.ContactList[i].Phone,  style = "width:170px;" })
 @Html.ValidationMessageFor((m => m.ContactList[i].Phone) 
  </td>
 <td>
  @Html.TextBoxFor(m => m.ContactList[i].Fax, new { style = "width:170px;" })
 @Html.ValidationMessageFor((m => m.ContactList[i].Fax)
     </td>
    </tr>
 }
 </table>

这是将添加新行的 javascript

+添加新联系人

函数 addRow(tableID) {

var table = document.getElementById(tableID);

var rowCount = table.rows.length;
var row = table.insertRow(rowCount);

var colCount = table.rows[0].cells.length;

for (var i = 0; i < colCount; i++) {

    var newcell = row.insertCell(i);

    newcell.innerHTML = table.rows[0].cells[i].innerHTML;
    //alert(newcell.childNodes);
    if (table.rows[0].cells[i].innerHTML != "") {
        switch (newcell.childNodes[0].type) {
            case "text":
                newcell.childNodes[0].value = "";
                break;
            case "checkbox":
                newcell.childNodes[0].checked = false;
                break;
            case "select-one":
                newcell.childNodes[0].selectedIndex = 0;
                break;
        }
    }
}

当我添加一个新行时,验证不起作用。我不知道为什么会这样而且我只在@Html.Beginform 中保留了我的观点。由于我的观点很大,我没有发布整个代码。我也有脚本。请帮忙

4

1 回答 1

0

很久以前我也遇到过这个问题,当时我开始学习 ASP.Net MVC3。以下是您可以尝试的一些提示。

如果您也将视图(或视图的一部分)粘贴到此处,我们可能会提供更好的帮助。

  1. 你的表格是否被一个

    @using(Html.BeginForm()){}

    片段?

    如果不是这样,并且您正在手动填写表单,则 MVC Javascript 验证器可能会出现意外行为。

  2. 你包括

    @Html.ValidationFor()

    对于您的每个文本框?

    而不仅仅是一个 ValidationFor() 的列表?

于 2012-04-28T17:51:20.073 回答