什么是刷新/更新MVC页面部分的最“MVC”标准方法?

时间:2012-01-09 10:33:03

标签: jquery asp.net-mvc asp.net-mvc-3

我有一个显示数据表的网页。我的页面上有一些关于某些元素的jQuery,当元素发生变化时,会对数据库进行Ajax调用,并在数据库中更新元素。

我还需要有时完全刷新数据网格。在我看来,有两种方法可以做到这一点:

1)使用Ajax调用我的控制器操作,使用Request.IsAjaxRequest检查是否是Ajax请求,将HTML.Partial返回到调用Ajax的javascript并更新HTML。我已经有90%的工作方法了。

Previous stackoverflow question

2)使用以下内容:

<div id="#thingy">@Html.Action("Detail", new { ac, me })</div>  
$('#thingy').load("@Server.JavaScriptStringEncode(Url.Action("Detail", new { ac, me }))"); 

现在我仍然试图让第一种方法起作用,但也看第二种方法,并认为它看起来容易得多。

我想编写有效的代码,但也想编写符合MVC工作方式的代码。考虑到这一点。哪个可能是最好的方法?关注我的一件事是@ Server.Java ...代码。我以前从未见过这个,我想知道如何处理MVC,是否应用了所有正常的安全性?

1 个答案:

答案 0 :(得分:5)

蜜蜂花,

我几乎肯定会坚持使用部分视图(和@RenderPartial() IF 视图中的模型与部分视图中的模型相同,否则您可以选择{{ 1}}帮助器调用视图中的数据刷新,其中基本数据类型与基本视图数据类型有很大不同。

您将从您的应用程序中了解哪种方法最适合相关用例,但绝对是RenderPartial()将是主要的方法,其中ajax更新需要稍后更新的部分div中的html。

[edit] - 以下是我在实践中如何看待这一点:

@RenderAction()

这将自动在第一次传递中填充模型中的div与名为_Detail.cshtml的partialview。随后,您将调用您的ajax以通过按照上述方式返回部分视图和模型的操作来定位此相同的div(#thingy)。

即:

// this is a div contained within the main Detail.cshtml view
<div id="#thingy">@Html.RenderPartial("_Detail", Model)</div>

希望这是有道理的。

祝你好运