如何添加htmlhelper 扩展方法

 我来答
育知同创教育
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="这是一张图片"/>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式