2011-08-23 82 views
0

我有强烈键入的视图。这里面我观点有jQueryUI的标签,即打电话给我的控制器,并返回一个局部视图将viewmodel传递给ajax控制器的动作,返回部分与该模型?

("#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); 
} 

这可能吗?这通常如何完成?如果您在一个视图中有模型数据,并且您想将其传递到异步加载的局部视图?

回答

0

你可以在你的视图模型创建的toJSON方法,这可能是这样的:

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

它只是序列化视图模型成JSON。 IHtmlString returntype确保输出在您的视图中不被编码。 到控制器的调用将是这样的:

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

JSON的模型绑定器可以重新在服务器端的视图模型。你可能会遇到一些问题,但我猜没有什么不可解决的。

+0

嘿谢谢,是不是有一个toJson包含在.Net某处或者它不工作? –

+0

不是我所知道的,但是在这种情况下,您肯定想要返回一个IHtmlString,或者由于编码而导致您的模型被搞砸了。 –

+0

有这个东西Json.Encode ..似乎编码它。但我不知道如果使用这个jquery加载函数是处理这个错误的方法。也许我应该建立一个Ajax查询? –

相关问题