jquery - 刷新/更新 MVC 页面部分的最 "MVC"标准方法是什么?

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

我有一个显示数据表的网页。我的页面在某些元素上有 jQuery,这样当元素更改时,就会对数据库进行 Ajax 调用,并且元素会在数据库中更新。

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

1) 使用 Ajax 调用我的 Controller 操作,使用 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 是如何处理这种情况的,是否应用了所有正常的安全性?

最佳答案

梅丽莎,

我几乎肯定会坚持使用局部 View (和@RenderPartial())如果 View 中的模型与局部 View 中的模型相同,否则你可以选择 @RenderAction() 帮助程序在基本数据类型与基本 View 数据类型显着不同的 View 中调用数据刷新。

您将从您的应用程序中知道哪种方法最适合所讨论的用例,但 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 的部分 View 填充模型中的 div。随后,您将调用 ajax 通过一个操作来定位同一个 div (#thingy),该操作返回上述的部分 View 和模型。

即:

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 - 刷新/更新 MVC 页面部分的最 "MVC"标准方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8787041/

相关文章:

c# - 如何在 asp.net mvc 中通过自定义 jQuery 验证复选框列表

javascript - 如何将 fadeOut jQuery 属性与 Javascript 文本片段一起使用

javascript - 异步HTTP(ajax)请求在脚本标签中有效,但在js文件中无效

javascript - 试图在 react 中的文本之间添加 br 标签

asp.net-mvc - ModelMetadata.Watermark 和 MVC View 模型

asp.net - 使用 ASP.NET MVC 3 构建的 REST API 的版本控制 - 最佳实践

asp.net-mvc-3 - 如何在页面级别启用跟踪(Razor 语法)

c# - MVC ajax 不工作

javascript - 在最后一段插入文字

Javascript:从选择输入中获取多个值