I have a Razor helper function that creates a re-usable HTML panel that saves me writing the same HTML over and over again.
@helper DefaultPanel(string panelTitle) {
<div class="panel">
<div class="panel-logo"><img src="/logo.png"></div>
<div class=panel-inner">
<p class="panel-title">@panelTitle</p>
<div class="panel-content">
/* Can I pass content to be rendered in here here? */
</div>
</div>
</div>
</div>
}
I'm wondering, is it possible to re-use this helper to fill .panel-content
with more HTML to allow further flexibility and code reuse - similar to something like below:
@LayoutHelpers.DefaultPanel("Welcome back") {
<div class="panel-content-inner">
<p>Welcome back, please select from the following options</p>
<a href="#">Profile</a>
<a href="#">My Defails</a>
</div>
}
Whilst using .NET MVC I've noticed the Html.BeginForm()
does a similar thing when wrapping the code within the @using
statement within the Html.BeginForm
declaration, like so:
@using (Html.BeginForm("Index", "Login", FormMethod.Post))
{
<div>This content gets rendered within the <form></form> markup.</div>
}
But can this done using @helper
methods? If not, is it possible to create a HtmlHelper
extension to do a similar thing the way the Html.BeginForm()
method does?
You can do a very similar thing using the @section
syntax as seen here
This seems like something that would be really useful to be able to do, and odd that there's no easy way to do it on a component level.
question from:
https://stackoverflow.com/questions/23518499/creating-reusable-html-view-components-using-razor-in-asp-net-mvc 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…