HTML Helper 是一种返回字符串的方法。字符串可以代表希望的任何类型内容。例如,可以使用 HTML Helper 呈现标准的 HTML 标记,如 HTML<input> 和<img>标记。也可以使用 HTML Helper 呈现更复杂的内容,如标签条或数据库数据的 HTML 表。
ASP.NET MVC Framework 包含以下一系列标准 HTML Helper(非完整列表):
- Html.ActionLink()
- Html.BeginForm()
- Html.CheckBox()
- Html.DropDownList()
- Html.EndForm()
- Html.Hidden()
- Html.ListBox()
- Html.Password()
- Html.RadioButton()
- Html.TextArea()
- Html.TextBox()
例如,程序清单 1 中的表单在两个标准 HTML Helper 的帮助下呈现,如图 1 所示。此表单使用Html.BeginForm()和Html.TextBox() Helper 方法呈现了一个简单的 HTML 表单。
图 1:使用 HTML Helper 呈现的页面(单击查看大图)
程序清单 1 Views\Home\Index.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="MvcApplication1.Views.Home.Index"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns= "http://www.w3.org/1999/xhtml ">
<head id="Head1" runat="server">
<title>Index</title>
</head>
<body>
<div>
<% using (Html.BeginForm())
{ %>
<label for="firstName">First Name:</label>
<br />
<%= Html.TextBox("firstName")%>
<br /><br />
<label for="lastName">Last Name:</label>
<br />
<%= Html.TextBox("lastName")%>
<br /><br />
<input type="submit" value="Register" />
<% } %>
1 </div>
</body>
</html>
Html.BeginForm() Helper 方法用于创建开始和结束 HTML<form>标记。请注意,Html.BeginForm() 方法在 using 语句中调用。using 语句确保<form> 标记在 using 块的结尾处结束。
如果愿意,可以不创建 using 块,而是调用 Html.EndForm() Helper 方法来结束 <form>标记。不管用哪种方法创建开始和结束<form> 标记,都显得非常直观。
程序清单 1 中使用 Html.TextBox() Helper 方法呈现 HTML<input>标记。如果在浏览器中选择查看源代码,则可以看到程序清单 2 中的 HTML 源代码。请注意,源代码包含标准的 HTML 标记。
重要事项:请注意,Html.TextBox()HTML Helper 使用 <%= %> 标记而不是<% %>标记呈现。如果不包括等号,则浏览器中不会呈现任何内容。
ASP.NET MVC Framework 包含少量的 Helper。大多数情况下,需要使用自定义 HTML Helper 扩展 MVC Framework。在本教程后面的部分中,我们将学习创建自定义 HTML Helper 的两种方法。
1、使用静态方法创建 HTML Helper
2、使用扩展方法创建 HTML Helper
上面载自msdn http://msdn.microsoft.com/zh-cn/dd408818.aspx
下面的例子就是用第二种方法自定义一个Html.Table标签
创建一个静态类HtmlHelper_base(必须静态)
using System.Data;
using System.Web.Mvc;
namespace MvcApp
{
public static class HtmlHelper_base
{
/// <summary>
/// table 标签
/// </summary>
/// <param name="helper"></param>
/// <param name="clsName">样式名字</param>
/// <param name="obj">table对象</param>
/// <returns></returns>
public static string Table(this HtmlHelper helper, string clsName,object obj)
{
DataTable dt = (DataTable)obj;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
if (dt != null)
{
sb.Append("<table class='" + clsName + "' >");
sb.Append("<tr>");
foreach (DataColumn item in dt.Columns)
{
sb.Append("<td>");
sb.Append(item.ColumnName);
sb.Append("</td>");
}
sb.Append("</tr>");
foreach (DataRow dr in dt.Rows)
{
sb.Append("<tr>");
foreach (DataColumn dc in dt.Columns)
{
sb.Append("<td>");
sb.Append(dr[dc.ColumnName].ToString());
sb.Append("</td>");
}
sb.Append("</tr>");
}
sb.Append("</table>");
}
return sb.ToString();
}
}
}
在前台页面引用该类的命名空间(<%@ Import Namespace="MvcApp" %>)即可像ASP.NET MVC Framework 中标准的 HTML Helper 一样工作了
aspx页面代码
通过这种方法,我们可以定义出很多控件来,非常方面使用。当然,我只是简单写了一下,抛砖引玉
小菜一个,别扔砖啊