关于asp.net mvc:如何在视图中加载部分视图

How can i load Partial view inside the view

这部分观点让我很困惑......

我想在主视图中加载局部视图...

这是简单的例子......

我正在加载Homecontroller Index操作的Index.cshtml作为主页面。

在index.cshtml我正在创建一个链接

1
@Html.ActionLink("load partial view","Load","Home")

在HomeController中我添加了一个名为的新Action

1
2
3
4
public PartialViewResult Load()
{
    return PartialView("_LoadView");
}

在_LoadView.cshmtl我只是有一个

1
    Welcome !!

但是,当运行项目时,index.cshtml首先渲染并向我显示链接"加载部分视图"...当我点击它时,它转到新页面instade,将欢迎消息从_LoadView.cshtml呈现到index.cshtml。

有什么不对?

注意:我不想通过AJAX加载页面或者不想使用Ajax.ActionLink


如果要直接在主视图中加载局部视图,可以使用Html.Action帮助器:

1
@Html.Action("Load","Home")

或者如果您不想通过Load操作,请使用HtmlPartial hepler:

1
@Html.Partial("_LoadView")

如果要使用Ajax.ActionLink,请将Html.ActionLink替换为:

1
2
3
4
5
6
@Ajax.ActionLink(
   "load partial view",
   "Load",
   "Home",
    new AjaxOptions { UpdateTargetId ="result" }
)

当然,您需要在页面中包含一个显示部分的持有者:

1
 

另外不要忘记包括:

1
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript">

在主视图中,以启用Ajax.*帮助程序。并确保在web.config中启用了不显眼的javascript(默认情况下应该是这样):

1
 


我有与莱尼尔完全相同的问题。我在这里和其他十几个地方尝试过修复。最终对我有用的事情就是添加

1
2
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")

我的布局......


对我来说,这是通过NuGet下载AJAX Unobtrusive库之后的工作:

1
 Search and install via NuGet Packages:   Microsoft.jQuery.Unobtrusive.Ajax

在视图中添加对jquery和AJAX Unobtrusive的引用:

1
2
@Scripts.Render("~/bundles/jquery")
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js">

接下来我们要渲染Ajax ActionLink和div:

1
2
3
4
5
6
@Ajax.ActionLink(
   "Click Here to Load the Partial View",
   "ActionName",
    null,
    new AjaxOptions { UpdateTargetId ="toUpdate" }
)


如果使用@Html.ActionLink()执行此操作,则在单击锚元素时加载PartialView将作为常规请求处理,即加载具有PartialViewResult方法响应的新页面。
如果你想加载itmedialty,那么你使用@Html.RenderPartial("_LoadView")@Html.RenderAction("Load")
如果你想在用户交互(即点击链接)上这样做,那么你需要使用AJAX - > @Ajax.ActionLink()


如果要在视图中填充局部视图的内容,可以使用

1
@Html.Partial("PartialViewName")

要么

1
{@Html.RenderPartial("PartialViewName");}

如果您想要生成服务器请求并处理数据,然后将部分视图返回到您可以使用的数据填充的主视图

1
2
3
4
5
6
7
8
...
    @Html.Action("Load","Home")
...

public PartialViewResult Load()
{
    return PartialView("_LoadView");
}

如果您希望用户单击该链接,然后填充您可以使用的部分视图数据:

1
2
3
4
5
6
7
@Ajax.ActionLink(
   "Click Here to Load the Partial View",
   "ActionName",
   "ControlerName",
    null,
    new AjaxOptions { UpdateTargetId ="toUpdate" }
)

RenderParital更适合用于性能。

1
{@Html.RenderPartial("_LoadView");}


对上面的小推文

1
2
3
4
5
6
7
@Ajax.ActionLink(
   "Click Here to Load the Partial View",
   "ActionName",
   "ControlerName",
    null,
    new AjaxOptions { UpdateTargetId ="toUpdate" }
)