2017-03-04 58 views
0

我有一个问题,因为我不知道如何在用户仪表板中编写子视图。ASP .Net MVC |如何在视图中添加子视图

实施例:

我对登录用户的仪表板和有路径仪表板/资料。 仪表板 - 控制器,配置文件 - 视图。 在配置文件视图中,我希望创建名为Overview,个人数据,更改密码的节/子视图(我不知道它是如何调用的)。

我有一个左边的菜单,我想知道如果我点击“个人数据”,它会在右边的容器中加载个人数据的内容 - 但没有重新加载所有页面。 与点击“更改密码”相同的情况下,我想在右侧显示“更改密码”视图的内容 - 无需重新加载。

我该如何得到它?谁能帮忙?

在此先感谢!

+0

您需要javascript和ajax才能将内容动态加载到视图中,而无需刷新页面。 –

+0

@StephenMuecke我的意思是我需要用我需要的动作创建ActionResults方法?并单独改变密码,个人资料和概览的部分视图?我是对的 ? – vlan99

+0

是的。如果你想说弹出一个对话框来显示一个表单来改变用户密码,你可以使用'$(someElement)load('@ Url.Action(...)')'来调用服务器方法,该方法返回一个局部你的'ResetPasswordForm'的视图,并将其插入'someElement' –

回答

0

这是你要找的吗? Partial Views

+0

是的,但如果我没有错,如果我们不想重新加载页面,可以使用部分视图。我的意思是部分视图永久包含在主视图中。我想知道,只有当我点击菜单中的适当按钮时才会加载这些“部分视图”。 – vlan99

+0

如上所述。我建议使用websockets而不是使用其他技术。看看这个 - https://radu-matei.github.io/blog/aspnet-core-websockets-middleware/以及这篇文章 - https://radu-matei.github.io/blog/real-time -aspnet核心/ –

0

我会看看从控制器和AJAX获取请求返回部分视图。

在控制器

public class SomeController : Controller 
{ 
    [HttpGet] 
    public ActionResult SomeAction() 
    { 
     // do some stuff 
     return PartialView(); 
    }  
} 

在你的js脚本

$.ajax({ 
    url: '/Some/SomeAction', 
    contentType: 'application/html; charset=utf-8', 
    type: 'GET', 
    datatype: 'html' 
}) 
.success(function (result) { 
    $("#container").html(result); 
}) 
.error(function (xhr, status) { 
    alert("We are having trouble, please try again later"); 
}); 

当然来处理这些东西的最佳方法是使用像角2或反应的前端框架。