【问题标题】:What's the most "MVC" standard way to refresh / update part of an MVC page?刷新/更新 MVC 页面部分的最“MVC”标准方式是什么?
【发布时间】:2012-01-09 10:33:02
【问题描述】:

我有一个显示数据表的网页。我的页面在某些元素上有 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 是如何处理这种情况的,是否应用了所有正常的安全性?

【问题讨论】:

  • 梅丽莎 - 在这里变得似曾相识。在这里stackoverflow.com/questions/8785596/… :)
  • 嗨吉姆,你看到我包含的问题链接了吗?我有另一种方法建议给我。这是一个不同的问题,因为我正在寻找一些建议。另一种方法则完全不同。只是想以最好的方式来工作。谢谢。
  • 使用 window.location.reload();
  • window.location.reload 将刷新整个窗口。这是完全不同的东西。谢谢

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


【解决方案1】:

梅丽莎,

我几乎肯定会坚持使用局部视图(和 @RenderPartial()如果视图中的模型与局部视图中的模型相同,否则您可以选择 @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 的局部视图填充模型中的 div。随后,您将调用您的 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); 
}

希望这是有道理的。

祝你好运

【讨论】:

  • 感谢吉姆的帮助。我将尝试实现这一点,然后在稍后标记答案。我只是赞成你的帮助,但如果一切都好,那么我以后可以接受。只是想先检查一下。
  • 梅丽莎 - 完全理解。任何问题,只需记下,我将通过编辑上面的答案来制作一个更完整的示例。
  • 方法有效,但是一旦部分被刷新,我的 jQuery 绑定似乎就消失了。我需要对此进行更多研究。感谢您的帮助。
猜你喜欢
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 2017-11-20
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 2011-01-05
  • 2016-03-30
相关资源
最近更新 更多