@Html.Partial
and @Html.Action
are both used in ASP.NET MVC to include reusable content in a view.
@Html.Partial
renders a partial view directly. It's useful for rendering small and simple views, like a header or footer.
@Html.Action
is used to render a view through a controller action. It's useful when you need to perform some logic or data retrieval before rendering the view.
Here's a brief comparison between the two:
-
@Html.Partial
directly renders the partial view.@Html.Action
calls an action method which in turn renders the view. -
@Html.Partial
is generally used to render small, reusable views like header, footer, etc.@Html.Action
is used to render complex views that require some logic or data retrieval. -
@Html.Partial
is faster than@Html.Action
because it doesn't involve a round-trip to the server. -
@Html.Partial
can only render a partial view, while@Html.Action
can render a full view with layout.
Overall, you should use @Html.Partial
for simple and small views and @Html.Action
for complex views that require some logic or data retrieval.
MVC Html.Partial or Html.Action
回答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
tml.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
<div>@Html.Partial("_partialName", model)</div>
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
<div>@Html.Action("MenuView")</div>
Here the view calls the controller action MenuView which creates a new view model and passes it to the partial.
标签:partial,Html,Action,Partial,model,view From: https://www.cnblogs.com/chucklu/p/17384674.html