powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не отправляются данные формы из диалога
21 сообщений из 21, страница 1 из 1
Не отправляются данные формы из диалога
    #38192873
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал создать модальное диалоговое окошко в котором заполняются некоторые поля и при нажатии кнопки данные эти обрабатываются. За основу брал пример из этой вот статьи .

Что в итоге сваял:
Основная форма, из которой вызывается диалог
Код: 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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
@model Mvc3App.Models.cheefPageParameters
@{
    ViewBag.Title = "UserPage";
    Layout = @ViewBag.Layout;
}
@using (Html.BeginForm())
{
    <div id="tabledata">
    @Html.Action("UserMetrics", "KPI", new { Params = Model })
    </div>
@Ajax.ActionLink("Correction", "Correction", new { per_oid = Model.per_oid, intYear=Model.Year, intMonth=Model.Month }, new AjaxOptions
    {
        HttpMethod = "GET",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "Correction",
        OnSuccess = "openPopup"
    })
    <script type="text/javascript">
        $(document).ready(function () {
            $("#CorrDlg").dialog({
                autoOpen: false,
                title: 'Correction',
                width: 500,
                height: 'auto',
                dialogClass: "alert",
                position: [400, 200],
                buttons: [{ text: "Ok", click: function () { $.post("/Cheef/Save1", $("#_Correction").serialize(), function () { $("#CorrDlg").dialog("close"); }) } },
                          { text: "Cancel", click: function () { $("#CorrDlg").dialog("close"); } }],
                modal: true,
                show: { effect: 'fade', duration: 1000 }
            })
        });
        function openPopup() {
            $("#CorrDlg").dialog("open");
        }
    </script>
    <table id = "Correction"></table>
}



Формочка диалога:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@model Mvc3App.Models.CorrectionDetails
@using (Html.BeginForm("Save1", "Cheef", FormMethod.Post, new { id = "_Correction" }))
{    
    <label class="Correction">
    <span>Correction</span>

    @Html.TextBox("Correction")
</label>
<label class="Description">
    <span>Description</span>

    @Html.TextArea("Description")
</label>
}



Контроллер
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
        public PartialViewResult Correction(string per_oid, int intYear, int intMonth)
        {
            CorrectionDetails Corrections = new CorrectionDetails();
            Corrections.Correction = "10";
            Corrections.Description = "ffff";

            return PartialView("_Correction", Corrections);
        }

        [HttpPost]
        public JsonResult Save1(CorrectionDetails CorrPg)
        {
            string manager = "hh";
            int noteId = 1;
            return Json(new { Success = noteId > 0 });
        }



Описание класса
Код: c#
1.
2.
3.
4.
5.
    public class CorrectionDetails
    {
        public string Correction { get; set; }
        public string Description { get; set; }
    }



Данные сейчас вставляю от балды - реальный код убрал, чтобы исключить ошибки там. Основная проблема - не передаются данные из формы диалога. В контроллер Save1 приходит пустой объект CorrectionDetails.

Где подвох?
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38192886
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alert($("#_Correction").serialize())
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193275
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какая полезная функция :) Все голову ломал, как бы мне содержимое $("#_Correction").serialize() увидеть :)
Пустую строку показывает.
Мне вот не совсем понятен фрагмент кода
Код: html
1.
@using (Html.BeginForm("Save1", "Cheef", FormMethod.Post, new { id = "_Correction" }))


Что есть id? Это какая то предопределенная переменная? Что я должен в нее записать? Любой мною выбранный идентификатор, который буду потом использовать в $("<Some_Var>").serialize() или я должен туда записать что-то конкретное?
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193283
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egoriusМне вот не совсем понятен фрагмент кодаэто же Ваш код, что ж Вы его непонатно написали?
напишите так, чтобы Вам было понятно
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193296
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egoriusКакая полезная функция :) Все голову ломал, как бы мне содержимое $("#_Correction").serialize() увидеть :)
Пустую строку показываетзначит функция http://api.jquery.com/serialize/
по какой-то причине считает, что внутри формы с идентификатором _Correction ничего не введено
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193319
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПаганельegoriusМне вот не совсем понятен фрагмент кодаэто же Ваш код, что ж Вы его непонатно написали?
напишите так, чтобы Вам было понятно
К своему стыду код этот я не написал, а скопипастил, о чем честно признался в самом начале. Просто теперь охота в нем разобраться и заставить его работать по-моему :)
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193337
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egoriusЧто есть id? Это какая то предопределенная переменная? Что я должен в нее записать? Любой мною выбранный идентификаторпочти любой, но он должен быть уникальным (на то он и идентификатор :)
рекомендую глянуть на получившийся html

egoriusкоторый буду потом использовать в $("<Some_Var>")селектор по идентификатору это один из видов селекторов
рекомендую глянуть какие они бывают: http://www.w3schools.com/jquery/jquery_ref_selectors.asp и http://www.w3.org/TR/selectors/
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193354
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Паганель,
Спасибо! Информации к размышлению пока более чем достаточно :) Буду ковырять
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193358
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egoriusК своему стыду код этот я не написал, а скопипастил, о чем честно признался в самом начале. Просто теперь охота в нем разобраться и заставить его работать по-моему :)Welcome to MSDN!

Отрисовка формы в ASP.NET MVC с помощью вспомогательных методов HTML
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193682
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сайт хороший. Пользуюсь им частенько :) Но вопросы остаются. Что есть id и во что оно преобразуется допер наконец-то :)
Значит что имеем на данный момент. Если я создаю на форме диалога элемент с id="TestId" и пытаюсь увидеть его значение в alert-е, то все случается как надо. Чтобы посмотреть во что преобразуется мой BeginForm вставил его параметры в BeginForm на основной странице и опацэ! В диалоге при вызове алерта мне показали значение элементов основной формы. Есть у меня там DDL который я убрал из кода выше, чтобы не загромождать место. Вот выбранное в нем значение мне и показал мой алерт.
Добавил в основную форму input и присвоил ему значение - так же отобразился в алерте. Засунул тот же input в форму диалога - пусто.
В итоге: контролы диалога - видим. Содержимое основной формы - видим. Содержимое формы диалога - нет.
А как увидеть код диалогового окна? Мне яндекс-браузер показывает лишь содержимое основной формы.
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193684
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последний вопрос снимается - нашел :)
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193686
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egoriusВ итоге: контролы диалога - видим. Содержимое основной формы - видим. Содержимое формы диалога - нетвозьмите firebug и гляньте что там в форме диалога (и проверьте ее id на всякий случай)
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193691
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот код формы:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<table id="CorrFrm" style="width: auto; min-height: 0px; height: auto; " class="ui-dialog-content ui-widget-content">
<form action="/Cheef/Save1" id="CorrId" method="post"></form>
<div><input type="text" name="a" value="1"></div>
<div><input type="text" name="b" value="2" id="b"></div>
<div><input type="hidden" name="c" value="3" id="c"></div>
<label class="Correction">
    <span>Correction</span><br>
    <input id="Correction" name="Correction" type="text" value="10">
</label>
<label class="Description">
    <span>Description</span><br>
    <textarea cols="20" id="Description" name="Description" rows="2">ffff</textarea>
</label>
</table>


И что мы видим? Тэг формы закрывается сразу после открытия. Естественно туда ничего не попадает. Как так? Ведь в коде фигурная скобка у меня охватывает весь код
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193716
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
внутри <table> должны быть <tr> и <td>
а то что у Вас - я не понимаю и razor видать тоже не понял
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193717
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И снова ответ готов!
Вместа ватэтава <table id = "Correction"></table> сделал ватэта <div id = "Correction"></div> и все заработало :)
Просто раньше у меня вместо диалога была табличка. И я что-то подумал, что какая разница, что именно будет заменять мой диалог? Оказывается разница есть.
Но это еще не всею Теперь мне надо передать не просто модель с парой текстовых свойств, а модель с полями представляющими собой списки. буду пробовать...
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193777
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мусье Паганель! Позвольте еще раз воспользоваться Вашей отзывчивостью!
Моя модель выглядит вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class CorrectionPage
    {
        public CorrectionPage(string per_oid, int intYear, int intMonth)
        {
            this.CorrStr = new List<CorrectionDetails>();
            string ItsmDB = System.Configuration.ConfigurationManager.ConnectionStrings["KPI_Rep"].ConnectionString;
            using (SqlConnection conSelect = new SqlConnection(ItsmDB))
            {
                conSelect.Open();
                using (SqlCommand Corrects = new SqlCommand("select * from [KPI_Rep].[dbo].[KPI_Correction] WHERE per_id='" + per_oid + "' and [year] ='" + intYear + "' and [month]='" + intMonth + "';", conSelect))
                {
                    Corrects.CommandType = CommandType.Text;
                    SqlDataReader reader = Corrects.ExecuteReader();
                    while (reader.Read())
                    {
                        this.CorrStr.Add(new CorrectionDetails { Correction = reader["correction"].ToString(), Description = reader["comment"].ToString() });
                    }
                }
            }
            this.CorrStr.Add(new CorrectionDetails { Correction = "0", Description = "" });
        }
        public List<CorrectionDetails> CorrStr { get; set; }
    }


Форма диалога:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@model Mvc3App.Models.CorrectionPage
@using (Html.BeginForm("Save", "Cheef", FormMethod.Post, new { id = "CorrId"}))
{    
    <table>
    <tr>
    <th>Корр.</th>
    <th>Примечание</th>
    </tr>
    @foreach (var item in Model.CorrStr)
    {
      <tr>
        <td><input type="text" name="corr" value="@item.Correction"/></td>
        <td><input type="text" name="desc" value="@item.Description" /></td>
      </tr>
    }
    </table>    
}


При таком варианте я получаю в serialized список вида [corr="1"&desc="bb"&corr="2"&desc="hhh"...]
Естественно, если я входным параметром контроллера делаю свой класс, то ничего хорошего не случается. Можно, конечно, передать это все добро в FormCollection и потом разобрать строки, но не спортивно, на мой взгляд. Как бы построить мою форму так, чтобы serialized генерил понятную моему классу последовательность? Возможно ли такое в принципе для класса с свойствами типа List?
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193793
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://stackoverflow.com/questions/12300281/asp-net-mvc-model-list-binding

мне самому такое никогда не нужно было, на вебформсах задачи как-то по-другому ставятся (или это мне просто везло:)
если бы понадобилось - я бы собирал и отдавал серверу json, а на серверной стороне рассериализировал бы его
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193824
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По ссылке почитал - немного не мой вариант. Мне айдишник записи никчему и мне, в таком случае, проще перебором полей строки обойтись. Про Json почитать надо. Не раз слышал это слово в формулировке типа "спасет тебя только лишь Json" :)
В любом случае огромное спасибо за дельные советы! А то у меня уже голова от всего этого кругом - сейчас хоть приблизительно понятно стало что к чему :)
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193830
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egoriusМне айдишник записи никчемутам у записи всего два строковых поля
а номер по порядку - просто чтоб сложить их воедино
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193844
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну у меня примерно такая же ситуация. На выходе получу два списка строк. Первый элемент первого списка будет соответствовать первому элементу второго списка и так далее. Так что Id ни к чему. А когда надо увязать все поля одной записи, я делал немного иначе. Я делал имя каждого элемента уникальным, генеря его из номера строки и имени поля. И при разборе FormCollection уже собирал все воедино
...
Рейтинг: 0 / 0
Не отправляются данные формы из диалога
    #38193849
egorius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только вот боюсь с таким вот способом споткнусь я когда в значении поля появится запятая или эмперсанд :) Надо будет попробовать...
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не отправляются данные формы из диалога
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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