我是mvc的新手。现在学习。我正在搜索各种技术来加载mvc中的局部视图,我在stackoverflow中得到了很好的一个。这里是。 如果要直接在主视图中加载局部视图,可以使用Html.Action帮助程序:
@Html.Action("Load", "Home")
或者如果您不想通过“加载”操作,请使用HtmlPartial hepler:
@Html.Partial("_LoadView")
If you want to use Ajax.ActionLink, replace your Html.ActionLink with:
@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" />
经过上面的代码后,会出现一个混乱。帮助要求。我的困惑如下。
@Html.Action("Load", "Home")
@Html.Partial("_LoadView")
我知道使用@Html.Partial("_LoadView")
,但不明白@ Html.Action(“加载”,“主页”)将如何运作?
任何人都可以向我展示几个例子来展示
的各种用法@Html.Action("Load", "Home")
以及它与@Html.Partial("_LoadView")
感谢
答案 0 :(得分:2)
Html.Partial
当部分视图中的显示数据已经存在于相应的视图模型中时,使用部分方法很有用。例如:在博客中显示文章的评论,我们想使用RenderPartial方法,因为文章带有注释的信息已填充在视图模型中。
@Html.Partial("_Comments")
Html.Action
当局部视图中的显示数据独立于相应的视图模型时,动作方法很有用。例如:在每个页面上显示类别列表的博客中,我们希望使用Action方法,因为类别列表由不同的模型填充。
@{Html.Action("Category","Home");}
答案 1 :(得分:1)
@Html.Action("Load", "Home")
将在“HomeController”中执行“加载”ActionResult。 此操作可能会返回任何这些(参考:MSDN):
虽然
@Html.Partial("_LoadView")
将部分视图“_LoadView”插入当前视图。
如果您熟悉网络表单,请将部分视图视为.ascx(用户控件)。
编辑:
@Html.Action()
的使用示例:
说你有这个观点:
<p>Here is my name: @Html.Action("Name")</p>
这是我的控制器(如你所见,我使用隐式使用你被路由到的控制器的Html.Action()的重载):
public class FooController : Controller
{
//
// GET: /Foo/
public ActionResult Index()
{
return View();
}
// GET: /Foo/Name
public ActionResult Name()
{
return Content("Annish");
}
}