我有一个显示数据表的网页。我的页面上有一些关于某些元素的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,是否应用了所有正常的安全性?
答案 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>
希望这是有道理的。
祝你好运