извлечение элемента repeateritem через jquery

#c# #jquery #ajax

#c# #jquery #ajax

Вопрос:

Я хочу получить элемент repeateritem через jquery в мою функцию saveorder в codebehind

Это мой код jquery:

  function saveOrder(controlid) {
        var id = controlid.name.replace("$btnSave", "");
        console.log(id)
        $.ajax({
            type: "POST",
            url: '/mobile/Default.aspx/saveOrder',
            data: '{par:"'   id   '"}',
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                console.log(data.d);
            },
            failure: function (response) {
                console.log(response.d);
                alert(response.d);
            }
        });
    }
  

Это мой исходный код:

  [WebMethod]
public static void saveOrder(string par)
{
    mobile_Menu m = new mobile_Menu();

    RepeaterItem row =  (RepeaterItem)m.FindControl(par);

    RadioButtonList rdblExtraSauce = (RadioButtonList)row.FindControl("rdblExtraSauce");
    CheckBoxList chkExtras = (CheckBoxList)row.FindControl("chkExtras");
    CheckBoxList chklExtraDrink = (CheckBoxList)row.FindControl("chklExtraDrink");
    RadioButtonList rdblExtraOption = (RadioButtonList)row.FindControl("rdblExtraOption");
    RadioButtonList rdblSauce = (RadioButtonList)row.FindControl("rdblSauce");
    CheckBoxList chkGarnish = (CheckBoxList)row.FindControl("chkGarnish");
    List<ListItem> emptyList = new List<ListItem>();
    HiddenField hfProductId = (HiddenField)row.FindControl("hfProductId");
    string rdlPriceId = ((RadioButtonList)row.FindControl("rdblSize")).SelectedValue.Split(',')[0];
    HiddenField hfMainProductId = (HiddenField)row.FindControl("hfMainProductId");


    //Get previous values
    if (m.Session["Cart"] != null)
    {
        m.values = (List<Order>)m.Session["Cart"];
    }

    if (chklExtraDrink.Items.Count > 0)
    {
        foreach (ListItem item in chklExtraDrink.Items)
            if (item.Selected) m.values.Add(new Order(item.Value.Split(',')[0], item.Value.Split(',')[1], emptyList, 1));
    }

    if (rdblExtraSauce.Items.Count > 0)
    {
        if (rdblExtraSauce.SelectedValue != "Geen saus")
        {
            m.values.Add(new Order(rdblExtraSauce.SelectedValue.Split(',')[0], rdblExtraSauce.SelectedValue.Split(',')[1], emptyList, 1));
        }
    }


    switch (Convert.ToInt32(hfMainProductId.Value))
    {
        case 16:
            m.values.Add(new Order(hfProductId.Value, rdlPriceId, m.addMultiChoice(chkGarnish), 1));
            break;
        case 17:
            //values.Add(new Order(hfProductId.Value, rdlPrice, rdblSauce.SelectedItem, addMultiChoice(chkExtras), 1)); ;
            m.values.Add(new Order(hfProductId.Value, rdlPriceId, rdblSauce.SelectedItem, m.addMultiChoice(chkExtras), 1, rdblExtraOption.SelectedItem));
            break;
        case 19:
            m.values.Add(new Order(hfProductId.Value, rdlPriceId, rdblSauce.SelectedItem, m.addMultiChoice(chkExtras), 1));
            break;
        case 20:
            m.values.Add(new Order(hfProductId.Value, rdlPriceId, rdblSauce.SelectedItem, m.addMultiChoice(chkExtras), 1)); ;
            break;
        case 21:
            m.values.Add(new Order(hfProductId.Value, rdlPriceId, rdblSauce.SelectedItem, 1));
            break;
        case 22:
            m.values.Add(new Order(hfProductId.Value, rdlPriceId, rdblSauce.SelectedItem, m.addMultiChoice(chkExtras), 1));
            break;
        default:
            m.values.Add(new Order(hfProductId.Value, rdlPriceId, m.addMultiChoice(chkGarnish), 1));
            break;
    }


    //Save updated list
    m.Session["Cart"] = m.values;

    if (m.Session["Cart"] != null)
    {
        m.btnOrder.Text = "Winkelmandje (€ "   Global.CalcTotPrice(m.values)   ")";

    }

}
  

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

дополнительная информация: у меня есть вложенный повторитель (всего 2), где мне нужен элемент RepeaterItem второго повторителя

Комментарии:

1. public static void SaveOrder(string par) вы ничего не возвращаете, ваш метод возвращает тип null там для ajax give null refrence excpion

2. не уверен, что это связано с возвращаемым значением. Код завершается ошибкой при переменной строки и имеет значение null.

3. тело ajax вызывает метод, и метод должен возвращать значение, когда вы ничего не возвращаете «Я хочу получить repeateritem через jquery в мою функцию saveorder в codebehind » если вы хотите повторно просмотреть список, передайте список в ajax. вы регистрируете данные console.log (data.d); но нет никаких данных, поэтому исключение нулевой ссылки либо удаляет данные из функции успеха, либо передает что-то в ajax

4. хорошо, если вы хотите передать параметр контроллеру, вы можете сделать это через строку запроса ‘{par:»‘ id ‘»}’, это не требуется, попробуйте ‘/mobile/Default.aspx/SaveOrder?par’ id,

5. Я могу получить свой параметр в своем коде на c #. Возможно, мое письмо было непонятным. Я хочу получить идентификатор RepeaterItem в свой код c #, чтобы иметь возможность извлекать все элементы управления внутри него. Параметр par имеет уникальный идентификатор repeateritem, но он завершается ошибкой в строке RepeaterItem = (RepeaterItem)m.FindControl(par);