2010-02-08 82 views
0

我有一个asp.net mvc视图,其中页面的顶部是一个表。我想要的是点击表格中的一行,该表格将转到服务器并获取有关该表格的详细信息。这工作正常,我在Json中返回细节。什么是显示jQuery json调用结果partialview的最佳方式

问题是我知道要显示下面的详细信息面板。现在我已经在部分视图中完成了详细信息窗格。

我怎么会“钩住这个”使用jquery,所以当我点击行,详细信息窗格显示与填写正确的模型数据。

  1. 我是否弃用json并在我的控制器操作中简单生成html并将html返回到视图以显示详细信息窗格?
  2. 其他最佳实践或建议?

回答

2

我假设你使用MVC的Ajax助手来调用你的控制器来获得你的JSon结果?

另一种方法是使用JQuery调用您的JSon控制器。因此,在链接或按钮上点击,您可以调用一些JavaScript,从隐藏的标签中找到需要传递给控制器​​的标识。当您收到JSon结果时,您只需设置html标记的属性并显示/隐藏详细信息窗格。事情是这样的:

function ShowPartial() { 
    var ID = $("#hiddenValue").attr("value"); 
    $.getJSON("YourUrl" + ID, function(result) { 
     $.each(result, function(item) { 
      // Set you html properties using this["JSonPropertyName"] 
     }); 
    }); 
} 

另一种方法是简单地使用MVC阿贾克斯佣工,并与局部的细节视图更新div标签,而不是使用JSON。

+0

我正在使用jquery $ .getJson来调用我的控制器操作并返回json – leora 2010-02-08 14:40:42

+0

使用这种方法,您将不得不使用javascript自己生成html。而你需要混合HTML,当你加载页面时不应该在那里。也就是说,在我看来,不好的做法,我可能会考虑从控制器操作返回HTML更好的方法。 – 2010-02-08 14:45:34

+0

你可能已经拥有了所有生成的html,并且只是在json返回时设置了这些值并取消隐藏它们,但我同意这不是一个最佳解决方案,并且从控制器返回html是最好的方法。 – lancscoder 2010-02-08 14:48:24

0

我会去像客户端模板引擎jtemplates(jquery插件)来处理这个客户端。您可以简单地从控制器操作中返回一个partialview,并在页面上将该html呈现在您想要的位置。但我认为从ajax请求返回html是一种不好的做法,我宁愿返回一个json对象。

+0

这正是我的dillema。将html返回给视图似乎更容易,但它似乎打破了关注的分离。 。 – leora 2010-02-08 14:32:49

+0

然后尝试jtemplates(我提到的链接)。有了这个,你可以将一个json对象“绑定”到一个预定义的模板上,就像你将模型转换为视图一样,而不是客户端。还有其他像这样的引擎,如果你不喜欢这个或不使用jQuery。 – 2010-02-08 14:35:34

相关问题