我有一个模型联系数据注释
[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
+添加新联系人
function 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中保留了我的观点。由于我的观点很大,我不会发布整个代码。我也有脚本。请帮助
答案 0 :(得分:0)
我很久以前也遇到过这个问题,当时我开始学习ASP.Net MVC3。以下是您可以尝试的一些提示。
如果您将视图(或部分视图)粘贴到此处,我们可能会提供更好的帮助。
您的表单是否被
包围@using(Html.BeginForm()){}
段?
如果不是,并且您正在手动执行该表单,则可能会因MVC Javascript验证程序而出现意外行为。
您是否包括
@ Html.ValidationFor()
每个文本框?
而不仅仅是ValidationFor()列表?