Ненавязчивая проверка не работает с динамически добавляемым частичным представлением

В настоящее время я столкнулся с проблемой проверки после динамического добавления содержимого.

У меня есть представление, строго типизированное для модели ( Порядок ). В этом Ордене может быть много предметов. Модель выглядит примерно так:

public class Order
{
    [Key]
    [HiddenInput]
    public int id { get; set; }

    [Display(Name = "Order Number")]
    public string number { get; set; }

    [Display(Name = "Order Date")]
    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
    public DateTime date { get; set; }

    [Required(ErrorMessage = "Beneficiary is required.")]
    [Display(Name = "Beneficiary")]
    public int beneficiary_id { get; set; }

    [Display(Name = "Beneficiary")]
    public Beneficiary beneficiary { get; set; }

    [Display(Name = "Items")]
    public List items { get; set; }

    [Display(Name = "Payment Method")]
    public List payment_methods { get; set; }
}

Я ввожу информацию о заказе, а также элементы для этого конкретного заказа. Я попробовал несколько способов динамического добавления контента и, наконец, пошел путем Стивена Сандерсона .

На мой взгляд, у меня есть обычная информация о заказе, а затем элементы, где моя модель выглядит примерно так:

@model trackmeMvc.Models.Model.Order
@{
    ViewBag.Title = "Create";
    Html.EnableClientValidation();
    Html.EnableUnobtrusiveJavaScript();
}








@using (Html.BeginForm("Create", "Order", FormMethod.Post, new { @id = "create_order" }))
    {
    @Html.ValidationSummary(true, "Order creation was unsuccessful. Please correct the errors and try again.")

    
@Html.LabelFor(m => m.date)*
@Html.TextBoxFor(m => m.date, new { @id = "order_date" })
@Html.ValidationMessageFor(m => m.date)

...


Это некоторые из вещей, которые я пробовал, но ничего не работает.

Я получил parseDynamicContent из Применение ненавязчивой проверки jquery к динамическому контенту в ASP.Net MVC . Я пробовал это во всех возможных сценариях, но все равно безуспешно.

Я также попробовал выполнить обычный синтаксический анализ, удалив проверку из формы, а затем применив ее снова, но все же вновь добавленные элементы не проверяются:

@foreach (var item in Model.items) { @Html.Partial("_NewItem", item) }

... и мое частичное представление будет выглядеть примерно так:

@model trackmeMvc.Models.Model.Item 

@{
    Layout = "";    
    Html.EnableClientValidation(true);

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

@using (Html.BeginCollectionItem("order_items")) { @Html.DropDownListFor(m => m.item_id, @items, "None", new { @style = "width:205px;", @id = "ddlItems", @class="ddlItem", @name="ddlItemList" }) @Html.ValidationMessageFor(m => m.item_id) ... }

Итак что происходит, у меня есть один пустой элемент, отправленный из контроллера в представление по умолчанию, чтобы показать одну пустую строку. Этот элемент подтвержден, но после того, как я нажимаю кнопку «Добавить элемент», появляется другая строка из этой части, но я не могу ее проверить.Я попытался провести проверку в частичном представлении (до того, как документ будет готов в основной форме), и все, что я прочитал, я применил, и это всегда заканчивается одинаково: проверка первой строки, а не других. Я попробовал выполнить проверку Стивена Сандерсона, сделанную для этой цели - все равно не повезло - даже проверку для частичных, найденную по этой ссылке и следующая за ней страница, относящаяся к частичной проверке ...

Что мне делать, чтобы эта проверка работала?

44
задан alex 9 June 2015 в 13:45
поделиться