html.partial mvc,MVC Html.Partial or Html.Action

问题

I am new to asp.net MVC so please bear with me. I need build a menu that repeats across multiple views. What would better serve the purpose Html.Action OR Html.Partial.

回答1:

Here are what I consider my guidelines on using Html.Action or Html.Partial

Html.Partial

Use Html.Partial when you are rendering static content or,

If you are going to pass data from the ViewModel that is being sent to the main view

Html.Action

Use Html.Action when you actually need to retrieve additional data from the server to populate the partial view

Basically, if is static, use Html.Partial(). If dynamic, model independent data, use Html.Action(). There are probably more scenarios, but this will give you a good idea of where/how to go. Html.RenderPartial() and Html.RenderAction() are interchangeable for the similarly named functions above.

回答2:

Html.Partial: Render a Partial View without hitting a controller action first. See: Partial Views

Html.Action Call a Controller Action, which may return a view/partial view (or may not, it could throw an HttpNotFound or return Json, or other things).

Does your menu require a view model, or is it static?

If it's a static menu, Html.Partial will fit your needs. Place the static menu content inside the partial view and call Html.Partial where you want it to render.

If the menu is being generated off a view model, you can use either Html.Partial or Html.Action:

Chaining the view model using Html.Partial:

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

@Html.Partial("_partialName", model)

Here we pass a complete view model to the view and the view calls Partial and hands its model off to the partial view.

** Separating the model using Html.Action:**

public ActionResult Index() {

return View(new GeneralViewModel());

}

public ActionResult MenuView() {

return PartialView(new MenuViewModel());

}

// View Code

@model GeneralViewModel

@Html.Action("MenuView")

Here the view calls the controller action MenuView which creates a new view model and passes it to the partial.

来源:https://stackoverflow.com/questions/11766554/mvc-html-partial-or-html-action

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值