Вы можете загрузить новую страницу в диалоге jquery ui с asp.net mvc - PullRequest
0 голосов
/ 30 ноября 2009

У меня есть обычная HTML-таблица, и я связываю свое представление asp.net mvc со строго типизированным массивом с именем MyObject [] . MyObject имеет 40 свойств, но я заполняю только 10 из них, потому что это то, что показано на главной сетке. это в индексном представлении.

Я хочу добавить столбец в мою сетку, чтобы иметь ссылку с надписью "Изменить детали" . это вызовет диалог jquery ui с формой для заполнения и позволит пользователю редактировать детали. я в основном хочу показать весь свой вид редактирования в диалоговом окне пользовательского интерфейса jquery в верхней части страницы индекса.

Единственная проблема, с которой я столкнулся, - это то, что на экране подробных данных гораздо больше данных, чем я перенес с сервера. Это было нормально, когда «Правка» была отдельной страницей, потому что я вернулся на сервер и заполнил все подробные данные, а затем сделал привязку к странице редактирования, но я, очевидно, сейчас не могу этого сделать.

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

Ответы [ 2 ]

2 голосов
/ 30 ноября 2009

Почему бы не сделать частичный пост обратно, используя jQuery, чтобы получить модель, которую вы хотите отредактировать? затем вы можете вернуть либо модель, либо RenderParttial и просто отобразить сгенерированный html в диалоговом окне.

если вам нужны образцы, дайте мне знать.

EDIT

$.post("/Controller/jQueryMethod", { param: paramValue }, function(newCommentListHTML) {
  //do something interesting with the html
});

Выше будет отправлено сообщение jquery обратно на ваш контроллер и выполнено действие jQueryMethod.

Он также передает один параметр. Запятые разделите их, если хотите больше.

Затем ваш контроллер захватывает модель и затем может передать модель в PartialView, который затем возвращает.

Так же, как это возвращение RenderPartial("PartialView", model);

1 голос
/ 30 ноября 2009

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

Добавьте обработчик onclick к вашей ссылке редактирования, используйте его для вызова функции javascript и передачи идентификатора вашей записи в качестве параметра. Используйте функцию getJSON jQuery для выполнения вызова AJAX на вашем контроллере.

$.getJSON("/Home/GetDetails/" + yourRecordId, function (data) {
            doSomething(data);
        });

Вызовите метод на вашем контроллере, который возвращает JsonResult.

    public JsonResult GetDetails(int? id)
    {
        Array MyObject = GetDetails(id)
        return Json(MyObject); // MVC 1.0
        //return Json(MyObject, JsonRequestBehavior.AllowGet); // MVC 2.0
    }

Используйте функцию обратного вызова, чтобы связать свои результаты и отобразить детали в модальном всплывающем окне.

Предполагается, что детали будут соответствовать модальному всплывающему окну. Если этого не произойдет, я бы рассмотрел ваши данные в отдельном представлении. Хороший дизайн MVC учитывает логическое разделение интересов. Если ваше представление на самом деле служит двум целям (то есть списку и редактированию), то это идеальная причина разделить его на два отдельных представления.

См. ASP.Net MVC Json Результат: параметры, переданные в метод метода контроллера , для получения дополнительной информации о передаче параметров.

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