我对这种片面的观点感到非常困惑。
我想在我的主视图中加载一个局部视图。
下面是一个简单的例子。
我正在加载家庭控制器索引操作的Index.cshtml作为主页。
在index.cshtml中,我通过以下方式创建链接
@Html.ActionLink("load partial view","Load","Home")
在HomeController中,我添加了一个名为
public PartialViewResult Load()
{
return PartialView("_LoadView");
}
在_LoadView.cshmtl中,我只是有一个
<div>
Welcome !!
</div>
但是,当运行项目时,index.cshtml首先呈现并显示链接“加载部分视图”。当我单击它时,它会转到新页面,安装将欢迎消息从_LoadView.cshtml呈现到index.cshtml中。
会出什么问题呢?
注意:我不想通过AJAX加载页面,也不想使用Ajax.ActionLink。
发布于 2011-09-04 05:13:49
如果你想在主视图中直接加载局部视图,你可以使用Html.Action
助手:
@Html.Action("Load", "Home")
或者,如果您不想执行加载操作,请使用HtmlPartialAsync助手:
@await Html.PartialAsync("_LoadView")
如果您要使用Ajax.ActionLink
,请将您的Html.ActionLink
替换为:
@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" />
发布于 2013-07-07 00:16:32
我和Leniel也有同样的问题。我尝试了这里和其他十几个地方建议的修复方法。最终对我起作用的事情是简单地添加
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
我的布局..。
发布于 2011-09-04 05:17:45
如果你使用@Html.ActionLink()
,那么当你点击一个锚元素时,加载PartialView就会被当作一个普通的请求来处理,也就是用PartialViewResult方法的响应来加载新页面。
如果您想立即加载它,那么您可以使用@Html.RenderPartial("_LoadView")
或@Html.RenderAction("Load")
。
如果你想在用户交互时(比如点击一个链接)这样做,那么你需要使用AJAX --> @Ajax.ActionLink()
https://stackoverflow.com/questions/7295835
复制相似问题