首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >MVC Html.Partial或Html.Action

MVC Html.Partial或Html.Action
EN

Stack Overflow用户
提问于 2012-08-02 03:52:39
回答 2查看 62.6K关注 0票数 63

我是asp.net MVC的新手,所以请耐心听我说。我需要建立一个菜单,重复在多个视图。Html.ActionHtml.Partial哪个更适合这个目的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-02 04:47:48

以下是我对使用Html.Action或Html.Partial的指导原则

Html.Partial

  1. 在呈现静态内容时使用Html.Partial,或者,如果要将数据从ViewModel传递到主视图

,则使用

Html.Action

  1. 当您实际需要从服务器检索其他数据以填充部分视图

时,请使用Html.Action

基本上,如果是静态的,就使用Html.Partial()。如果是动态的、模型无关的数据,则使用Html.Action()。可能会有更多的场景,但这会让你有一个好的想法去哪里/如何去。对于上面命名类似的函数,Html.RenderPartial()Html.RenderAction()是可互换的。

票数 122
EN

Stack Overflow用户

发布于 2012-08-02 05:26:57

Html.Partial:先呈现局部视图,而不需要点击控制器操作。请参阅:Partial Views

Html.Action调用控制器操作可能会返回视图/部分视图(也可能不会,它可能抛出HttpNotFound或返回Json或其他东西)。

您的菜单是否需要视图模型,或者是静态的?

如果是静态菜单,Html.Partial将满足您的需求。将静态菜单内容放在局部视图中,并在希望呈现的位置调用Html.Partial

如果菜单是从视图模型生成的,则可以使用Html.PartialHtml.Action

使用Html.Partial链接视图模型

代码语言:javascript
复制
public class MenuViewModel {
    // menu data goes here
}

public class GeneralViewModel : MenuViewModel {
    // general view info goes here
}

public ActionResult Index() {
    return View(new GeneralViewModel());
}

// View Code
@model GeneralViewModel
<div>@Html.Partial("_partialName", model)</div>

在这里,我们将一个完整的视图模型传递给视图,视图调用Partial并将其模型传递给partial视图。

**使用Html.Action:**分离模型

代码语言:javascript
复制
public ActionResult Index() {
    return View(new GeneralViewModel());
}

public ActionResult MenuView() {
    return PartialView(new MenuViewModel());
}

// View Code
@model GeneralViewModel
<div>@Html.Action("MenuView")</div>

在这里,视图调用控制器操作MenuView,这将创建一个新的视图模型并将其传递给部分。

票数 67
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11766554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档