如何添加htmlhelper 扩展方法
1个回答
2016-06-27 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
添加htmlhelper 扩展方法是在HtmlHelper类中扩展实现的。
如下所示:
1、htmlHelper主类:
namespace System.Web.Mvc.Html
{
public static class FormExtensions//表单相关扩展方法,例如创建表单标签等。
public static class InputExtensions//这里包含了所有input,例如:text,button,readiobutton等等。
public static class LinkExtensions//链接相关方法
public class MvcForm : IDisposable//与客户端控件无关
public static class RenderPartialExtensions//这是输出PartialView
public static class SelectExtensions//输出下拉框
public static class TextAreaExtensions//输出多行文本框
public static class ValidationExtensions//输出相关表单元素验证。
}
2、扩展类InputExtensions,MVC框架本身对此已有扩展:
namespace System.Web.Mvc.Html
{
// Summary:
// Represents support for HTML input controls in an application.
public static class InputExtensions
{
public static MvcHtmlString CheckBox(this HtmlHelper htmlHelper, string name);
}
}
3、也可以通过对HtmlHelper进行扩展来构建自己的HtmlHelper辅助方法
System.Web.Mvc.Html下的HtmlHelper只能完成大部分html控件的输出,在扩展之前,有个叫TagBuilder的类(生成标签)比较好用,不必纠结于它的细节,只要大概知道他有那些方法就行:
public TagBuilder(string tagName);
public void AddCssClass(string value);//增加样式
public void GenerateId(string name);//设置控件ID
private string GetAttributesString();
public void MergeAttribute(string key, string value);//设置属性值
public void MergeAttribute(string key, string value, bool replaceExisting);
public void MergeAttributes<TKey, TValue>(IDictionary<TKey, TValue> attributes);
public void MergeAttributes<TKey, TValue>(IDictionary<TKey, TValue> attributes, bool replaceExisting);
public void SetInnerText(string innerText);//设置显示文本
public override string ToString();
public string ToString(TagRenderMode renderMode);//输出控件html
扩展img标签为例
namespace System.Web.Mvc
{
public static class ImageExtensions
{
public static string Image(this HtmlHelper helper, string id, string url, string alternateText)
{
return Image(helper, id, url, alternateText, null);
}
public static string Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
{
// 创建IMG标签
var builder = new TagBuilder("img");
// 增加ID属性
builder.GenerateId(id);
// 增加属性
builder.MergeAttribute("src", url);
builder.MergeAttribute("alt", alternateText);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
// 输出完整的img标签
return builder.ToString(TagRenderMode.SelfClosing);
}
}
}
调用:
调用:@Html.Image("img1", http://img/111.jpg, "这是一张图片", new {border="4px"})
输出:<img id="img1" src="http://img/111.jpg" style="border:4px;" alt="这是一张图片"/>
如下所示:
1、htmlHelper主类:
namespace System.Web.Mvc.Html
{
public static class FormExtensions//表单相关扩展方法,例如创建表单标签等。
public static class InputExtensions//这里包含了所有input,例如:text,button,readiobutton等等。
public static class LinkExtensions//链接相关方法
public class MvcForm : IDisposable//与客户端控件无关
public static class RenderPartialExtensions//这是输出PartialView
public static class SelectExtensions//输出下拉框
public static class TextAreaExtensions//输出多行文本框
public static class ValidationExtensions//输出相关表单元素验证。
}
2、扩展类InputExtensions,MVC框架本身对此已有扩展:
namespace System.Web.Mvc.Html
{
// Summary:
// Represents support for HTML input controls in an application.
public static class InputExtensions
{
public static MvcHtmlString CheckBox(this HtmlHelper htmlHelper, string name);
}
}
3、也可以通过对HtmlHelper进行扩展来构建自己的HtmlHelper辅助方法
System.Web.Mvc.Html下的HtmlHelper只能完成大部分html控件的输出,在扩展之前,有个叫TagBuilder的类(生成标签)比较好用,不必纠结于它的细节,只要大概知道他有那些方法就行:
public TagBuilder(string tagName);
public void AddCssClass(string value);//增加样式
public void GenerateId(string name);//设置控件ID
private string GetAttributesString();
public void MergeAttribute(string key, string value);//设置属性值
public void MergeAttribute(string key, string value, bool replaceExisting);
public void MergeAttributes<TKey, TValue>(IDictionary<TKey, TValue> attributes);
public void MergeAttributes<TKey, TValue>(IDictionary<TKey, TValue> attributes, bool replaceExisting);
public void SetInnerText(string innerText);//设置显示文本
public override string ToString();
public string ToString(TagRenderMode renderMode);//输出控件html
扩展img标签为例
namespace System.Web.Mvc
{
public static class ImageExtensions
{
public static string Image(this HtmlHelper helper, string id, string url, string alternateText)
{
return Image(helper, id, url, alternateText, null);
}
public static string Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
{
// 创建IMG标签
var builder = new TagBuilder("img");
// 增加ID属性
builder.GenerateId(id);
// 增加属性
builder.MergeAttribute("src", url);
builder.MergeAttribute("alt", alternateText);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
// 输出完整的img标签
return builder.ToString(TagRenderMode.SelfClosing);
}
}
}
调用:
调用:@Html.Image("img1", http://img/111.jpg, "这是一张图片", new {border="4px"})
输出:<img id="img1" src="http://img/111.jpg" style="border:4px;" alt="这是一张图片"/>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询