我怎样才能加载视图内的部分视图

我对这种局部观点非常混淆

我想加载我的主视图中的部分视图…

这里是简单的例子…

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

在index.cshtml我正在创build一个链接通过

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

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

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

在_LoadView.cshmtl我只是有一个

 <div> Welcome !! </div> 

但是,运行项目时,index.cshtml首先呈现,并显示我的链接“加载部分视图”…当我点击它进入新的页面从_LoadView.cshtml欢迎消息呈现到index.cshtml 。

什么可能是错的?

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

如果你想直接在主视图中加载部分视图,你可以使用Html.Action助手:

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

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

 @Html.Partial("_LoadView") 

如果您想使用Ajax.ActionLink ,请将您的Html.ActionLinkreplace为:

 @Ajax.ActionLink( "load partial view", "Load", "Home", new AjaxOptions { UpdateTargetId = "result" } ) 

当然你需要在页面中包含一个持有者来显示部分内容:

 <div id="result"></div> 

另外不要忘记包括:

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

在你的主视图中,以启用Ajax.*助手。 并确保您的web.config中启用不显眼的JavaScript(它应该是默认情况下):

 <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

我和Leniel有完全一样的问题。 我尝试修复这里和其他十几个地方。 终于为我工作的东西只是添加

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

我的布局…

如果你用@Html.ActionLink()那么当点击一个锚元素时,加载PartialView就被当作一个普通的请求来处理,即用PartialViewResult方法的响应来加载新页面。
如果你想加载它,那么你使用@Html.RenderPartial("_LoadView")@Html.RenderAction("Load")
如果你想在用户交互(即点击一个链接),那么你需要使用AJAX – > @Ajax.ActionLink()

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

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

比在视图中添加引用jQuery和AJAX Unobtrusive:

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

接下来是Ajax ActionLinkdiv ,我们要渲染结果:

 @Ajax.ActionLink( "Click Here to Load the Partial View", "ActionName", null, new AjaxOptions { UpdateTargetId = "toUpdate" } ) <div id="toUpdate"></div> 

小镊子到上面

 @Ajax.ActionLink( "Click Here to Load the Partial View", "ActionName", "ControlerName", null, new AjaxOptions { UpdateTargetId = "toUpdate" } ) <div id="toUpdate"></div> 

RenderParital更适合用于性能。

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

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

 @Html.Partial("PartialViewName") 

要么

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

如果要制作服务器请求并处理数据,然后将部分视图返回给您可以使用的数据的主视图

 ... @Html.Action("Load", "Home") ... public PartialViewResult Load() { return PartialView("_LoadView"); } 

如果你想要用户点击链接,然后填充部分视图的数据,你可以使用:

 @Ajax.ActionLink( "Click Here to Load the Partial View", "ActionName", "ControlerName", null, new AjaxOptions { UpdateTargetId = "toUpdate" } ) 

一件需要注意的东西 – 而且我也是为了这个…

 jquery.validate.unobtrusive.js jquery.validate.unobtrusive.min.js 

与…不一样

 jquery.unobtrusive-ajax.js jquery.unobtrusive-ajax.min.js 

我读“不显眼”,并假设我有正确的库 – AJAX的是必需的!