Is there a generic Html.Element?
I would like to be able to do this:
Html.Element<AccountController>("IFrame", "elementName", new { src = c => c.ChangePassword })
Is there a generic Html.Element?
I would like to be able to do this:
Html.Element<AccountController>("IFrame", "elementName", new { src = c => c.ChangePassword })
The most appropriate, "MVC-ish" approach to build HTML content the way you're describing is to create a custom HtmlHelper extension method. This method ought to make use an instance of System.Web.Mvc.TagBuilder to construct the HTML. Here's an example (copied from one of my current projects, but not actually tested in isolation):
using System.Web.Mvc;
using System.Linq;
public static class HtmlHelperExtensions
{
public static string Element(this HtmlHelper htmlHelper, string tag, string name, object htmlAttributes)
{
TagBuilder builder = new TagBuilder(tag);
builder.GenerateId(name);
builder.MergeAttributes(htmlAttributes);
// use builder.AddCssClass(...) to specify CSS class names
return builder.ToString()
}
}
// example of using the custom HtmlHelper extension method from within a view:
<%=Html.Element("iframe", "elementName", new { src = "[action url here]" })%>
As for extending your custom HtmlHelper method to support the controller action lambda, this post is a good place to start.