将viewmodel传递给ajax控制器操作,该操作返回该模型的部分?

时间:2011-08-23 21:32:58

标签: asp.net-mvc-3 jquery model partial-views

我有一个强类型的视图。在这个视图中我有jqueryui选项卡,单击时调用我的Controller并返回局部视图

("#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 :(得分:0)

您可以在viewmodel上创建一个ToJson方法,可能是这样的:

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

它只是将viewmodel序列化为json。 IHtmlString返回类型确保输出未在视图中编码。 对您的控制器的调用将是这样的:

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

json modelbinder可以在服务器端重新创建viewmodel。你可能在整个过程中遇到了一些问题,但我认为没有什么是无法解决的。

相关问题