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

対応するビューを送信すると、クライアント名のみに検証メッセージが表示されます。入力元のテキストボックスがありますが、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;
        }
    }
}

新しい行を追加すると、検証が機能しません.なぜそれが起こっているのかわかりません. 私の見解は巨大であるため、コード全体を投稿していません。スクリプトも用意しています。助けてください

4

1 に答える 1

0

ASP.Net MVC3 の学習を始めたとき、私もずっと前にこの問題を抱えていました。ここにあなたが試すことができるいくつかのヒントがあります.

ビュー (またはビューの一部) をここにも貼り付けていただくと、より適切にサポートできる場合があります。

  1. あなたのフォームは

    @using(Html.BeginForm()){}

    スニペット?

    そうでなく、手動でフォームを作成している場合、MVC Javascript バリデーターで予期しない動作が発生する可能性があります。

  2. を含めていますか

    @Html.ValidationFor()

    テキストボックスごとに?

    ValidationFor() リストだけではありませんか?

于 2012-04-28T17:51:20.073 に答える