2012-01-09 66 views
2

我有一个显示数据表的网页。我的页面在某些元素上有jQuery,这样当元素发生更改时,将对数据库进行Ajax调用,并在数据库中更新元素。刷新/更新部分MVC页面的最“MVC”标准方式是什么?

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

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,所有正常的安全性得到应用?

+0

梅丽莎 - 在这里越来越似曾相识。和这里http://stackoverflow.com/questions/8785596/problems-implementing-ajax-to-return-a-html-partial-page-in-mvc3 :) – 2012-01-09 10:36:23

+0

嗨吉姆,你看到我包括的问题链接。我有另一种方法建议给我。这是一个不同的问题,因为我正在寻找一些建议。另一种方法完全不同。只是想要做到这一点,我可以去工作的最佳方式。谢谢。 – 2012-01-09 10:41:06

+1

use window.location.reload(); – user1006544 2012-01-09 10:48:34

回答

5

梅丽莎,

我几乎可以肯定有partialview(和@RenderPartial()IF在视图模型是一样的,在partialview坚持,否则,你可以选择为@RenderAction()帮手调用数据在您的视图中刷新,其中基本数据类型与基本视图数据类型显着不同。

你会从你的应用程序中知道哪种方法最适合用于有问题的用例,但肯定RenderPartial()将是重要的方法,其中ajax更新在稍后的片段中需要更新div中的html。

[编辑] - 这里的我怎么会看到这个列明做法:

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

这将在一号通自动对一个名为_Detail.cshtml partialview模型填充DIV。随后,您将通过按照上述方式返回partialview和model的操作来调用您的ajax来定位同一个div(#thingy)。

即:

public ActionResult Detail(string ac, string me) {  
    vm.AdminDetails = _link.Detail(ac + me).ToList();  
    if (Request.IsAjaxRequest())   
     return PartialView("_Detail", vm);  
    return View(vm); 
} 

希望这是有道理的。

祝你好运

+0

谢谢你的帮助吉姆。我会尽力实现这一点,然后再标记答案。我只是提出了你的帮助,但如果一切还好,我可以稍后再接受。只是想先检查一下。 – 2012-01-09 11:28:11

+0

梅丽莎 - 完全理解。任何问题,只需放下一个便条,我就会通过编辑上面的答案来创建一个更完整的示例。 – 2012-01-09 11:29:55

+0

方法工作,但一旦部分刷新我的jQuery绑定似乎已经消失。我需要更多地考虑这一点。谢谢你的帮助。 – 2012-01-09 12:00:21