Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Не отправляются данные формы из диалога / 21 сообщений из 21, страница 1 из 1
21.03.2013, 12:12
    #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
21.03.2013, 12:17
    #38192886
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отправляются данные формы из диалога
alert($("#_Correction").serialize())
...
Рейтинг: 0 / 0
21.03.2013, 14:34
    #38193275
egorius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отправляются данные формы из диалога
Какая полезная функция :) Все голову ломал, как бы мне содержимое $("#_Correction").serialize() увидеть :)
Пустую строку показывает.
Мне вот не совсем понятен фрагмент кода
Код: html
1.
@using (Html.BeginForm("Save1", "Cheef", FormMethod.Post, new { id = "_Correction" }))


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

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

Отрисовка формы в ASP.NET MVC с помощью вспомогательных методов HTML
...
Рейтинг: 0 / 0
21.03.2013, 17:10
    #38193682
egorius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отправляются данные формы из диалога
Сайт хороший. Пользуюсь им частенько :) Но вопросы остаются. Что есть id и во что оно преобразуется допер наконец-то :)
Значит что имеем на данный момент. Если я создаю на форме диалога элемент с id="TestId" и пытаюсь увидеть его значение в alert-е, то все случается как надо. Чтобы посмотреть во что преобразуется мой BeginForm вставил его параметры в BeginForm на основной странице и опацэ! В диалоге при вызове алерта мне показали значение элементов основной формы. Есть у меня там DDL который я убрал из кода выше, чтобы не загромождать место. Вот выбранное в нем значение мне и показал мой алерт.
Добавил в основную форму input и присвоил ему значение - так же отобразился в алерте. Засунул тот же input в форму диалога - пусто.
В итоге: контролы диалога - видим. Содержимое основной формы - видим. Содержимое формы диалога - нет.
А как увидеть код диалогового окна? Мне яндекс-браузер показывает лишь содержимое основной формы.
...
Рейтинг: 0 / 0
21.03.2013, 17:12
    #38193684
egorius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отправляются данные формы из диалога
Последний вопрос снимается - нашел :)
...
Рейтинг: 0 / 0
21.03.2013, 17:13
    #38193686
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отправляются данные формы из диалога
egoriusВ итоге: контролы диалога - видим. Содержимое основной формы - видим. Содержимое формы диалога - нетвозьмите firebug и гляньте что там в форме диалога (и проверьте ее id на всякий случай)
...
Рейтинг: 0 / 0
21.03.2013, 17:15
    #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
21.03.2013, 17:25
    #38193716
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отправляются данные формы из диалога
внутри <table> должны быть <tr> и <td>
а то что у Вас - я не понимаю и razor видать тоже не понял
...
Рейтинг: 0 / 0
21.03.2013, 17:26
    #38193717
egorius
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отправляются данные формы из диалога
И снова ответ готов!
Вместа ватэтава <table id = "Correction"></table> сделал ватэта <div id = "Correction"></div> и все заработало :)
Просто раньше у меня вместо диалога была табличка. И я что-то подумал, что какая разница, что именно будет заменять мой диалог? Оказывается разница есть.
Но это еще не всею Теперь мне надо передать не просто модель с парой текстовых свойств, а модель с полями представляющими собой списки. буду пробовать...
...
Рейтинг: 0 / 0
21.03.2013, 18:05
    #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
21.03.2013, 18:20
    #38193793
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не отправляются данные формы из диалога
http://stackoverflow.com/questions/12300281/asp-net-mvc-model-list-binding

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


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