繁体   English   中英

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

[英]Do a reload of mvc/razor partial view with javascript

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

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

我可以想象为每种类型的模块做一个单独的js function,然后传入一些数据,这样jquery就可以找到具体的模块,然后做一个Z2705A83A5A0659CEDA5Z345839726的数据。 但这需要我始终从 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.
}

感谢 GregH 的几个关键词,这导致了一些想法。

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

  1. Controller:

你想让你的 controller return PartialView("somePartialViewUrl", new SomeModel()) ,显然保存 model 并依靠数据收集还不够好,我不得不制作一个新的 model 实例还不够好,我不得不制作 model 的新实例。

  1. 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); 可能还有许多其他方式。

完毕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM