有通用的 Html.Element 吗?
我希望能够做到这一点:
Html.Element<AccountController>("IFrame", "elementName", new { src = c => c.ChangePassword })
有通用的 Html.Element 吗?
我希望能够做到这一点:
Html.Element<AccountController>("IFrame", "elementName", new { src = c => c.ChangePassword })
以您所描述的方式构建 HTML 内容的最合适的“MVC-ish”方法是创建自定义 HtmlHelper 扩展方法。该方法应该使用 System.Web.Mvc.TagBuilder 的实例来构造 HTML。这是一个示例(从我当前的一个项目中复制而来,但实际上并未单独进行测试):
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]" })%>
至于扩展您的自定义 HtmlHelper 方法以支持控制器操作 lambda,这篇文章是一个很好的起点。