我怎样才能加载视图内的部分视图
我对这种局部观点非常混淆
我想加载我的主视图中的部分视图…
这里是简单的例子…
我正在加载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.ActionLink
replace为:
@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 ActionLink和div ,我们要渲染结果:
@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的是必需的!
- 是否有可能使用ASP.NET MVC创build一个login系统,但不使用MembershipProvider?
- 如何用剃刀视图引擎简洁地创build可选的HTML属性?
- 在ASP.NET MVC中redirect()与RedirectPermanent()
- ASP.NET MVC – 捆绑configuration顺序
- 为什么LINQ to Entities不能识别方法System.String ToString()?
- 如何删除ASP.Net MVC默认HTTP头?
- 当优化设置为true时,MVC4 – Bundling不起作用
- ActionLink htmlAttributes
- 未find方法:'!! 0 System.Array.Empty()'。 ASApp.BundleConfig.RegisterBundles(BundleCollection包)inBundleConfig.cs