I am building a Html Helper in MVC 4 and I want to know how to build tags / html in the html helpers properly.
For example here is simple html helper that creates image tag using TagBuilder
class:
public static MvcHtmlString Image(this HtmlHelper html, string imagePath,
string title = null, string alt = null)
{
var img = new TagBuilder("img");
img.MergeAttribute("src", imagePath);
if (title != null) img.MergeAttribute("title", title);
if (alt != null) img.MergeAttribute("alt", alt);
return MvcHtmlString.Create(img.ToString(TagRenderMode.SelfClosing));
}
From another side I can do something like this:
// C#:
public static MvcHtmlString Image(this HtmlHelper html, string imagePath,
string title = null, string alt = null)
{
var model = new SomeModel() {
Path = imagePath,
Title = title,
Alt = alt
};
return MvcHtmlString.Create(Razor.Parse("sometemplate.cshtml", model));
}
// cshtml:
<img src="@model.Path" title="@model.Title" alt="@model.Alt" />
Which is the better solution?
Both are valid, I would suspect the latter to be much slower however and I'm trying to see what benefits it would have over using a Partial View.
My rule of thumb is that HtmlHelpers should only be used for simple markup; anything more complicated should be using Partial Views and Child Actions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With