1

これは私のモデルです

public class ContractsViewModel
    {
        public int Id { get; set; }
        public string Code { get; set; }
        public List<ContractProductItemViewModel> Products { get; set; }
        public ContractsViewModel()
        {
            this.Products = new List<ContractProductItemViewModel>();
        }
    }

    public class ContractProductItemViewModel
    {
        public int Id { get; set; }
        [Required]
        public int? ProductId { get; set; }
        [Required]
        public double Price { get; set; }
        [Required]
        public int Quantity { get; set; }
    }

これはコントラクト ビューです。

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <div class="fieldset">
        <div class="editor-label">
            @Html.LabelFor(model => model.Code)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Code)
            @Html.ValidationMessageFor(model => model.Code)
        </div>
        <div class="new-detailitem">
            <div class="new-icon"></div>
            <div>Crear Nuevo</div>
        </div>
        <div>
            <table class="tblindex detail">
                <thead>
                    <td class="quantity">Cantidad</td>
                    <td>Grupo</td>
                    <td>Articulo</td>
                    <td class="price">Precio</td>
                    <td>SubTotal</td>
                    <td></td>
                </thead>
                <tbody>

                </tbody>
            </table>
        </div>
    </div>
}

これが productDetail ビューです

@{
    Layout = null;
    if (this.ViewContext.FormContext == null)
    {
        this.ViewContext.FormContext = new FormContext();
    }
}

<tr>
    <td class="quantity">
        @Html.TextBoxFor(model => model.Quantity)
        @Html.ValidationMessageFor(model => model.Quantity)
    </td>
    <td class="category"></td>
    <td class="product">
        <div>
            <span style="float:left"></span>
            @Html.HiddenFor(model => model.ProductId)
            <div class="getitem"></div>
            <div style="clear: both"></div>
        </div>
        @Html.ValidationMessageFor(model => model.ProductId)
    </td>
    <td class="price">
        @Html.EditorFor(model => model.Price)
        @Html.ValidationMessageFor(model => model.Price)
    </td>
    <td>0.00</td>
    <td><div class="removeicon"/></td>
</tr>

jquery ajaxを使用して、各アイテムの詳細行をプログラムで追加しています。

問題が 1 つあります。productdetail ビューの html.EditorFor と ValidationMessageFor が各行に同じ ID を生成し、クライアントでイベントが間違った方法で処理されます。

ここで何が間違っていますか?これを解決するための最良のアプローチは何ですか?

ありがとう

4

0 に答える 0