Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何在视图中加载局部视图?_Asp.net Mvc_Asp.net Mvc 3_Razor_Asp.net Mvc Partialview - Fatal编程技术网

Asp.net mvc 如何在视图中加载局部视图?

Asp.net mvc 如何在视图中加载局部视图?,asp.net-mvc,asp.net-mvc-3,razor,asp.net-mvc-partialview,Asp.net Mvc,Asp.net Mvc 3,Razor,Asp.net Mvc Partialview,我对这种片面的观点感到非常困惑 我想在主视图中加载局部视图 下面是一个简单的例子 我正在加载Homecontroller索引操作的Index.cshtml作为主页 在index.cshtml中,我通过 @Html.ActionLink("load partial view","Load","Home") 在HomeController中,我添加了一个名为 public PartialViewResult Load() { re

我对这种片面的观点感到非常困惑

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

下面是一个简单的例子

我正在加载Homecontroller索引操作的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首先呈现并显示链接“Load Partial View”。当我点击它时,它会进入新页面instade,将欢迎消息从_LoadView.cshtml呈现到index.cshtml中

有什么不对劲


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

如果要直接在主视图中加载部分视图,可以使用
Html。操作
帮助程序:

@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>

如果使用
@Html.ActionLink()
执行此操作,则在单击锚元素时加载PartialView将作为正常请求处理,即使用PartialViewResult方法的响应加载新页面
如果您想立即加载它,那么您需要使用
@Html.RenderPartial(“\u LoadView”)
@Html.RenderAction(“加载”)

如果您想在用户交互(即单击链接)时加载它,那么您需要使用AJAX-->
@AJAX.ActionLink()
我的问题与Leniel完全相同。我尝试了这里和其他十几个地方的修复建议。最终对我起作用的是简单地添加

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

对于我的布局…

在我通过NuGet下载AJAX Unobtrusive library之后,这一点就起到了作用:

 Search and install via NuGet Packages:   Microsoft.jQuery.Unobtrusive.Ajax
然后在视图中添加对jquery和AJAX的引用:

@Scripts.Render("~/bundles/jquery")
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"> </script>
@Scripts.Render(“~/bundles/jquery”)
接下来是Ajax ActionLink和div,我们希望呈现结果:

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

<div id="toUpdate"></div>
@Ajax.ActionLink(
“单击此处加载局部视图”,
“ActionName”,
无效的
新的AjaxOptions{UpdateTargetId=“toUpdate”}
)

上面的小特威克

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

<div id="toUpdate"></div>
@Ajax.ActionLink(
“单击此处加载局部视图”,
“ActionName”,
“ControlerName”,
无效的
新的AjaxOptions{UpdateTargetId=“toUpdate”}
)

为了提高性能,使用RenderParial更好

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

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

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

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

如果您希望发出服务器请求并处理数据,然后将部分视图返回到主视图,主视图中填充了您可以使用的数据

@Html.Partial("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" }
)

工作正常…这意味着如果我想将它与@Html.ActionLink一起使用,它的goona将作为一个普通请求,并在新页面中打开部分视图@帕特尔·米兰布,没错。ActionLink在Html中呈现一个普通的锚,该锚只对给定的url执行GET请求,并将浏览器重定向到该url。因为您已将其指向只返回部分的加载操作,所以浏览器将被重定向并显示此部分。噢,天哪!非常感谢您的提问和回答!我已经试着让它工作了好几个小时,从来没有完全正确的语法。在过去的一两个小时里(加上休息时间),我试图让Darin的上述版本正常工作,但我忽略了“不要忘记包含”这一行,我不相信这会对加载整个页面和加载到div之间产生影响(我预期会出现错误,而不是显示更改),但确实如此。嗨,在我的场景中,我想在短视图和扩展视图之间切换。我在短视图中放置了一个
Ajax.ActionLink
,并将
UpdateTargetId
设置为父div的id。现在,当我单击链接时,Ajax结果将替换整个页面。回答得棒极了。谢谢你@DarinDimitrov给我这么完美的一个。甚至在我看到你的名字之前,我就确定是你。:)上面的解决方案工作得很好…这意味着如果我想将它与@Html.ActionLink一起使用,它的goona作为一个普通请求,并在新页面中打开parial视图?我只是想用部分观点来澄清我的想法……我也花了几个小时来解决这个问题。在“基本mvc应用程序”的默认mvc4模板中,我有@Scripts.Render(“~/bundles/jquery”),但没有@Scripts.Render(“~/bundles/jqueryval”)。因此,我只添加第二个和部分视图,开始在同一页面上呈现,而不是在新页面上呈现。谢谢。即使对我来说,在我导入这两个导入之前,它也不起作用。我按照youtube上的教程实现了这一点,并且没有安装
Microsoft.jQuery.Unobtrusive.Ajax
。尽管我已经安装了jquery.unobstructive-ajax.min.js,但仍然如此。谢谢你帮我省去了很多头痛。
@Ajax.ActionLink(
    "Click Here to Load the Partial View", 
    "ActionName", 
    "ControlerName",
    null, 
    new AjaxOptions { UpdateTargetId = "toUpdate" }
)