MVC3 передает данные из модального диалогового окна jquery в контроллер при событии загрузки - PullRequest
0 голосов
/ 23 марта 2012

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

//Dialog Function=============================================================
    //declaring the function
    $(function () {
        $('#dialog').dialog({
            autoOpen: false,
            hide: 'fade',
            show: 'fade',
            width: 350,
            height: 270,
            resizable: false,
            modal: true,
            dialogClass: 'dialog',
            open: function (event, ui) {               
                $(this).load('@Url.Action("AddFiles", "ProjectDetails")');
            }
        });
    });

    //Showing the dialog when one of the 3 buttons is clicked.
    $("button[name='Add']").click(function () {
        $('#type').val($(this).val());   
        $('#dialog').dialog('open');                 
    });
    //=========================================================================

Я передаю значение в скрытое поле в моем модальном div:

@Html.Hidden("type")

Так что мне нужно, чтобы превратить его в HiddenFor и для этого мне нужно пройти класс ModelView в моем методе AddFiles

public ActionResult AddFiles()
    {
        return View();
    }

Это будет моя модель:

public class FileViewModel 
{
    public string Name { get; set; }
   public string type { get; set; }
   public string comments { get; set; }        
 }

Но я не знаю, как передать значение кнопки модели, которую я бы создал (модель будет иметь атрибут типа строки). Есть ли способ сделать это, или у меня нет выбора, чтобы работать с независимым скрытым поле?

1 Ответ

1 голос
/ 27 марта 2012

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

Вот ссылка. http://groups.google.com/group/jquery-en/browse_thread/thread/13a3a580b4128d3d

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

var DataBuilderList = new List<FileViewModel>();
DataBuilderList.Add(new FileViewModel{ name = "thename", type = "thetype", comments = "comments" });

Вам потребуется вызвать метод из контроллера, который сделает это после того, как он был передан в действие.

Если я ошибаюсь или у вас есть комментарии, дайте мне знать. Гудлак.

Кстати, это тот же синтаксис, что и jquery:

open: function () { $(this).load('ProjectDetails/AddFiles', {  : id }), function () { }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...