モデルの2行目のために働いていない。次にクライアント側の検証以下のようにASP.NET MVC
public class User
{
[DisplayName("ID")]
[Range(0, 9999)]
public int ID { get; set; }
public string Mask { get; set; }
}
コントローラは、二つのビューがあり
上記モデルのIQueryableを返します。以下のようにモデル
メインビュー
@model IQueryable<User>
@{
var Array = Model.ToArray();
}
//Header here
<tbody id="table-body-vlan">
@{
for (var i = 0; i < Array.Length; i++)
{
Html.RenderPartial("_AddRow", Array [i], new ViewDataDictionary() { { "Index", i } });
}
}
</tbody>
</table>
</div>
}
**そして、部分図**
@model User
@{
var index = ViewData["Index "];
}
<tr class="js-deletable-item" id="[email protected]" data-id="@Model.ID" >
<td class="editable">
@Html.TextBoxFor(v => Model.ID, new {Name = "ID[" + index + "]", id = "id-" + Model.ID, Value = Model. ID > 0 ? Model. ID.ToString() : ""})
</td>
<td class="editable">
@Html.TextBoxFor(v => Model.Name, new {Name = "Id[" + index + "].Name", data_val = "false" })
</td>
</tr>
号から各行をレンダリングする親ビューとその後、部分図: IQueryableに10個のレコードがある場合、クライアント側の検証は最初の行にのみ適用されます。
最初の行にIDフィールドに101Sと入力すると、無効なIDを示す警告が表示されます(背景色を変更することによって)。 しかし、私が2番目の行や他の行で同じことをすると、背景色が変わることはありません。クライアント側の検証(データアノテーションで定義)は最初の行に対してのみ適用されます。
最初の行がレンダリングされた後、他の行にAnnotation関連のプロパティが追加されていないようです。
あなたのモデルに関係のない 'name'属性を生成しています(このメソッドを作るためにPOSTメソッドで何を使っているのかよくわかりません)[User'の型に' EditorTemplate'を使います](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943)、もし本当に部分的なものを使いたいのであれば、 'HtmlFieldPrefix'を渡す必要があります。 [この回答](https://stackoverflow.com/questions/29808573/getting-the-values-from-a-nested-complex-object-that-is-passed-to-a-partial-view/29809907#を参照してください。 29809907) –
そして、 'HtmlHelper'メソッドを使用するときに決して' name'や 'value'属性を変更しようとしません。 –
tx Stephen。実際にはコードを書いたわけではなく、いくつかのバグを修正しました。ここに – user2739418