Ajax загрузить частичное представление, принимающее параметр - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть представление, что список частей в формате htmltable из таблицы базы данных PartList.Htmltable содержит ссылку, которая должна использоваться для ввода значений в таблицу базы данных Bom.При нажатии на ссылку, он должен загрузить частичное представление для этой конкретной части.Частичное представление содержит раскрывающийся список для выбора дочерней части, текстовое поле для ввода количества и html-таблицу, в которой показан другой ввод для этой части.Я поражен тем, что мне нужно загрузить частичное представление, принимающее partId, используя ajax.Частичное представление должно быть загружено в div в представлении listPart.Как этого добиться?

1 Ответ

1 голос
/ 07 декабря 2011

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

Работа с JQuery Ajax API на ASP.NET MVC 3.0 - мощь JSON, JQuery и ASP.NET MVC Partial Views

Все, что вам нужно сделать, это просто:

  1. Выполнить Ajax-вызов для вашего действия контроллера:

    $.ajax({
        type: "POST",
        url: actionURL,
        data: d,
        success: function (r) {
            $("#to-do-db-list-container").html(r.data);
        },
        complete: function () {
            $("#ajax-progress-dialog").dialog("close");
            $(".isDone").bind("click", function (event) {
                toggleIsDone(event, $(this));
            });
        },
        error: function (req, status, error) {
            //do what you need to do here if an error occurs
            $("#ajax-progress-dialog").dialog("close");
        }
    });
    
  2. Верните ваше частичное представление:

    [HttpPost]
    public ActionResult toogleIsDone(int itemId) {
    
        //Getting the item according to itemId param
        var model = _entities.ToDoTBs.FirstOrDefault(x => x.ToDoItemID == itemId);
        //toggling the IsDone property
        model.IsDone = !model.IsDone;
    
        //Making the change on the db and saving
        ObjectStateEntry osmEntry = _entities.ObjectStateManager.GetObjectStateEntry(model);
        osmEntry.ChangeState(EntityState.Modified);
        _entities.SaveChanges();
    
        var updatedModel = _entities.ToDoTBs;
    
        //returning the new template as json result
        return Json(new { data = this.RenderPartialViewToString("_ToDoDBListPartial", updatedModel) });
    }
    

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

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