Передать viewmodel в действие контроллера ajax, которое возвращает частичное с этой моделью? - PullRequest
0 голосов
/ 24 августа 2011

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

("#tab0").load('@Url.Action("ProfileImage", "User")');

public ActionResult ProfileImage()
{
            return PartialView("_ProfileImage");
}

Что я хотел бы сделать, это передать модель из «родительского» представления в контроллер, который можетзатем привяжите его к частичному при возврате:

("#tab0").load('@Url.Action("ProfileImage", "User", new {model=model})');

public ActionResult ProfileImage(UserViewModel model)
{
            return PartialView("_ProfileImage", model);
}

Возможно ли это?как это обычно делается?Где у вас есть данные модели в одном представлении, и вы хотите передать их в асинхронно загруженное частичное представление?

1 Ответ

0 голосов
/ 24 августа 2011

Вы можете создать метод ToJson для вашей модели представления, который может выглядеть примерно так:

        public IHtmlString ToJson()
        {
            return MvcHtmlString.Create(Json.Encode(this));
        }

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

("#tab0").load('@Url.Action("ProfileImage", "User", new {model=model.ToJson()})');

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

...