使用 javascript 重新加载 mvc/razor 部分视图

Posted

技术标签:

【中文标题】使用 javascript 重新加载 mvc/razor 部分视图【英文标题】:Do a reload of mvc/razor partial view with javascript 【发布时间】:2021-08-13 19:09:00 【问题描述】:

在我的项目中,我从部分视图加载了多行模块。 所以想象一个带有信息的小方块网格。 它们都有一个弹出对话框,显示点击模块的数据。

目前,当我在对话框中提交更改时,javascript 会重新加载整个页面。但是,这需要很长时间,我只需要能够刷新一个对话框。

我可以想象为每种类型的模块做一个单独的js函数,然后传入一些数据,这样jquery就可以找到具体的模块,然后对数据做一个ajax get。但这需要我始终从 js 中插入所有数据。而不是使用 razor 和 MVC 的内置功能。

有谁知道在 div 中调用局部视图的方法? 同样在将来,我需要在间隔刷新中重新加载“一些”但不是所有模块。因此,为了将来的验证目的:

我正在寻找的东西是这样的:

function reloadElement(row, column, id)
   var target = $("#div1");
   // todo find row and column
   target.html.partial("url", model); //<----- looking for something like this. cross fingers.

【问题讨论】:

如果你在一个时间间隔内重新加载一个 div 中的数据,你可以在 js 中设置一个计时器来执行一个对你的服务器的 ajax 调用。 ajax 调用将触发一个控制器操作,该操作可以仅返回您的视图在 json 中需要的新数据,也可以返回您在页面上替换的整个部分视图 @GregH“返回您在页面上替换的整个部分视图”,这听起来像是我正在寻找的内容。您能否通过代码示例来回答这个问题会看吗? 【参考方案1】:

感谢 GregH 提供的几个关键词,它们带来了一些想法。

我自己解决了,所以如果你也遇到这个问题,我是这样解决的:

    控制器:

你想让你的控制器return PartialView("somePartialViewUrl", new SomeModel()),显然保存模型并依赖数据收集还不够好,我不得不创建一个模型的新实例。

    Javascript

在处理事件的“点击”中,输入:

$.ajax(
    url: "controllerName/actionName",
    data: JSON.stringify( row:1,column:2 .... ),
    contentType: "application/json", 
    dataType: "html", 
    type: "POST",
    success: function (partial) 
        $("#div2").html(partial);
    
);

这将覆盖“#div2”中的 html。

我相信您也可以使用$("#div2").innerHTML = partial;$("#div2").load("url",parameters); 以及可能许多其他方式。

完成。

【讨论】:

以上是关于使用 javascript 重新加载 mvc/razor 部分视图的主要内容,如果未能解决你的问题,请参考以下文章

防止用户使用 jquery 或 javascript 重新加载页面 [重复]

如何使用javascript重新加载页面[重复]

Javascript 重新加载页面

使用 javascript 重新加载 mvc/razor 部分视图

带有 Javascript 的 WebView 不断重新加载

如何使用 Virtual DOM 在 React / Javascript 中重新加载输入值?