2

我是 mvc 的新手。现在学习。我正在搜索各种技术以在 mvc 中加载部分视图,而我在 stackoverflow 中得到了很好的一种。这里是。如果你想直接在主视图中加载局部视图,你可以使用 Html.Action 助手:

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

或者,如果您不想执行 Load 操作,请使用 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")但不明白 @H​​tml.Action("Load", "Home") 将如何工作?

谁能给我看几个例子来展示

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

以及它与@Html.Partial("_LoadView")

谢谢

4

2 回答 2

2

Html.Partial

  1. 将部分视图呈现为 HTML 编码的字符串。
  2. 该方法的结果可以存储在变量中,因为它返回字符串类型的值。
  3. 使用简单,无需创建任何操作。
  4. 当部分视图中显示的数据已经在相应的视图模型中时,使用 Partial 方法很有用。例如:在博客中显示文章的评论,我们希望使用 RenderPartial 方法,因为已经填充了带有评论的文章信息在视图模型中。

    @Html.Partial("_Comments")

Html.Action

  1. 将部分视图呈现为 HtmlString 。
  2. 对于这个方法,我们需要创建一个子动作来渲染局部视图。
  3. 该方法的结果可以存储在变量中,因为它返回字符串类型的值。
  4. 当部分视图中的显示数据独立于相应的视图模型时,Action 方法很有用。例如:在博客中显示每个页面上的类别列表,我们希望使用 Action 方法,因为类别列表由不同的模型。

    @{Html.Action("Category","Home");}

于 2013-09-11T08:50:15.720 回答
1
@Html.Action("Load", "Home")

将在您的“HomeController”中执行“Load”ActionResult。此操作可能会返回以下任何一项(参考:MSDN):

  • 内容结果
  • 空结果
  • 文件结果
  • HttpUnauthorizedResult
  • JavaScript结果
  • json结果
  • 重定向结果
  • 重定向到路由结果
  • 查看结果库

尽管

@Html.Partial("_LoadView")

将您的局部视图“_LoadView”插入到您当前的视图中。

如果您熟悉 Web 表单,请将部分视图视为 .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");
    }
}
于 2013-09-11T08:49:33.293 回答