powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ajax.BeginForm ответ получен - но не обновляет форму
23 сообщений из 23, страница 1 из 1
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991913
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!

на странице друг над другом располагаются контейнеры <div>, их n-количество
Код: html
1.
2.
3.
4.
 <div id="@Model.Id" class="row" style="margin-left: 0px;margin-right: 0px;">
 <img id="@data.Id" src="@data.Path/@data.Folder/@data.OriginalName" alt="Загрузка изображения"  />
 @Html.Partial("AddCollectionPartial", Model)
</div>




Сам Partial имеет следующий код
Код: html
1.
2.
3.
4.
5.
<div id="CollectionBtnStatus_@Model.Id">
 <button class="btn btn -primary btn-md" id="@Model.Id" onclick="getModelId(this)" data-toggle="modal" data-target="#myModalInAlbum" style="background-color: #f5f5f5; border-color: #f5f5f5; font-weight: normal; color: #666;">
       В Коллекцию
  </button>
</div>





кнопка <button>В Коллекцию </button>
вызывает модальное окно
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<!-- Modal -->
<div class="modal fade" id="myModalInAlbum" tabindex="-1" role="dialog" aria-labelledby="myModalLabelInAlbum" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content visible-lg">
            @using (Ajax.BeginForm("AddCollectionPartial", "Home", new AjaxOptions { UpdateTargetId = "CollectionBtnStatus_22", InsertionMode = InsertionMode.Replace }, new { @class = "form-horizontal", id = "popupCollection" }))
            { <div class="modal-body" id="dialog-modal" style="padding-bottom: 0px !important;">
                <div style="padding-bottom: 10px;">
                    <div style="font-size: 15px; color: white; background-color: #222222;" class="text-center">Добавить в Коллекцию</div>
                </div>
                <div class="form-group">
                    <div class="col-sm-12">
                        @Html.TextBox("listCollectionpop", null, new { @class = "form-control clistCollectionpop", @style = "float:left;margin-top:10px;", placeholder = "Выберите Альбом" })
                        @Html.Hidden("hidlistCollectionId")
                        @Html.Hidden("IdShoppingOnPopUp")
                        <input type="text" id="txt_name" />
                    </div>
                </div>
            </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">Отмена</button>
                    <button type="submit" id="saveCollection" class="btn btn-primary">Ок</button>
                </div>
            }
        </div>
    </div>
</div>
<!-- /.modal -->




в форме Ajax.BeginForm этого окна UpdateTargetId = "CollectionBtnStatus_22" при вызове его изменяется на id дива который нужно обновить
(CollectionBtnStatus_21 или CollectionBtnStatus_20 и тд)
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
<script type="text/javascript">
    function getModelId(el) {
        $('#IdShoppingOnPopUp').val(el.id);
        var nameTargetId = "CollectionBtnStatus_" + el.id;
        $('#popupCollection').attr('data-ajax-update', nameTargetId);
        $('#txt_name').val(nameTargetId);
    }
</script>




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

далее ответ от сервера сморю в fireBug
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 <div id="CollectionBtnStatus_22">
<form action="/Home/AddCollectionPartial" data-ajax="true" data-ajax-mode="replace" data-ajax-update
="#CollectionBtnStatus_22" id="form0" method="post"><input id="hidlistCollectionId" name="hidlistCollectionId"
 type="hidden" value="3" /><input id="IdShoppingOnPopUp" name="IdShoppingOnPopUp" type="hidden" value
="22" />                <button class="btn btn-primary btn-md" id="btnInAlbom" onclick="return confirmDeleteAlbum
();">
                    из Коллекции
                </button>
</form>
</div>



ответ получаю, но сам <div id="CollectionBtnStatus_22"> остается не обновленным.....

если жестко задаю UpdateTargetId = "CollectionBtnStatus_22" - то обновление происходит, все работает супер
а если подменяю динамически джаваскриптом то не работает...
Подскажите куда копать, где смотреть? уже долго сижу над этой проблемой((((
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991932
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yardie, не получится так. Уберите UpdateTargetId из объявления формы, а добавьте OnSuccess и укажите JS функцию, которая и будет делать обновления нужного элемента:
Код: javascript
1.
2.
3.
function AddCollectionPartialSuccess(result) {
    $('#CollectionBtnStatus_' + getModelId(el)).html(result);
}
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991934
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: html
1.
@using (Ajax.BeginForm("AddCollectionPartial", "Home", new AjaxOptions {InsertionMode = InsertionMode.Replace, OnSuccess = "AddCollectionPartialSuccess"}, new { @class = "form-horizontal", id = "popupCollection" }))
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991969
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все сделал с использованием OnSuccess, тоже ответ есть, но кнопка не изменяется(((

Может что-то с Ajax(((((
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991973
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yardie,
А метод OnSuccess срабатывает?
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991974
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, срабатывает
alert выдает ответ

Код: javascript
1.
2.
3.
4.
 function AddCollectionPartialSuccess(result) {
        alert(result);
        $('#CollectionBtnStatus_' + getModelId(idshp)).html(result);
    }
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991975
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что в методе AddCollectionPartial?
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991977
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 public PartialViewResult AddCollectionPartial(int IdShoppingOnPopUp, int hidlistCollectionId)
        {
           
            Shopping model = new Shopping();
            workShopping wsp = new workShopping();
            if (IdShoppingOnPopUp!=0) 
            {
                model = wsp.GetItem(IdShoppingOnPopUp);
            }

            LookGid.Data.forUsers.UserHelper us = new LookGid.Data.forUsers.UserHelper();
            LookGid.Data.forCollection.workCollection col = new LookGid.Data.forCollection.workCollection();
            bool checkCol = col.CheckCollection(IdShoppingOnPopUp, us.GetUserIdByLogin(User.Identity.Name));

            if (checkCol == false)
            {
                col.NewShoppingInCollection(IdShoppingOnPopUp, hidlistCollectionId);
            }

            if (checkCol == true)
            {
                 col.DelShoppingInCollection(us.GetUserIdByLogin(User.Identity.Name), IdShoppingOnPopUp);
            }

            return PartialView(model);
        }
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991980
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yardie, jquery.unobtrusive-ajax.js подключен?
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991981
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как без него работать будет, естественно
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38991984
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по ходу нужно создать чистый проект, подключить только необходимые скрипты и с минимальным кодом все еще раз прогнать
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38992719
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c чистым проектом все равно не работает именно таким образом((((
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994097
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yardiec чистым проектом все равно не работает именно таким образом((((

Думаю проблема в динамическом определении ID контрола. Вот это

Код: c#
1.
 $('#CollectionBtnStatus_' + getModelId(idshp)).html(result);



вычисляется еще до вызова Ajax. Попробуйте захардкодить ID контрола, посмотреть что получится.
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994102
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текст ошибки бы хорошо, но вангую, в методе контроллера проблема.
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994109
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

авторесли жестко задаю UpdateTargetId = "CollectionBtnStatus_22" - то обновление происходит, все работает супер
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994113
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,
Ну да, логично :)
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994116
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Вот я не понимаю, простой вопрос. Ну есть-же дебаггер, console.debug() наконец. Повтыкать в сомнительных местах, посмотреть если ссылки на nothing. Что тут сложного-то?Обычная ежедневная рутина.
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994118
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter, понадеемся что у ТСа все получится. Решение работающее - не зря же я гуглил так долго
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994124
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Если обновление контрола зависит от результата вызова, то success нужно оборачивать в функцию и передавать результат как параметр. Пример

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function GetCard(cid) {
    var dto = { "cid": cid };
    $.ajax({
        type: "POST",
        url: "../JVFWebService.asmx/GetCard",
        contentType: "application/json; charset=utf-8",
        dataType: 'json',
        data: JSON.stringify(dto),
        success: function (result) {
            BindData(result.d);
        },
        error: function (xhr, status, error) {
            var err = eval("(" + xhr.responseText + ")");
            alert(err.Message);
        }
    });
}


, а не просто

Код: c#
1.
2.
3.
function AddCollectionPartialSuccess(result) {
    $('#CollectionBtnStatus_' + getModelId(el)).html(result);
}
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994125
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,
Не нужно. Мешать Ajax.BeginForm с Query.ajax вообще не рекомендуется. И к тому же:

yardieда, срабатывает
alert выдает ответ

Код: javascript
1.
2.
3.
4.
 function AddCollectionPartialSuccess(result) {
        alert(result);
        $('#CollectionBtnStatus_' + getModelId(idshp)).html(result);
    }
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994126
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так что путем дедуктивного метода приходим, что, судя по всему, проблема с getModelId(idshp)
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994129
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

Это был пример. Я хэлперы не пользую. Ну тем более если срабатывает, то это "$('#CollectionBtnStatus_' + getModelId(idshp)" просто не может найти контрол. Я писал почему.
...
Рейтинг: 0 / 0
Ajax.BeginForm ответ получен - но не обновляет форму
    #38994137
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter,
Да, id нужно javscript'ом обновлять до вызова Ajax метода.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ajax.BeginForm ответ получен - но не обновляет форму
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]