• 使用扩展方法创建 HTML Helper


    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;
    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页面代码

    <div><%= Html.Table("clsName", ViewData["table"] )%> </div>

    通过这种方法,我们可以定义出很多控件来,非常方面使用。当然,我只是简单写了一下,抛砖引玉

    小菜一个,别扔砖啊

  • 相关阅读:
    HDOJ.1263
    另一种跳转actvity方式
    [转]Android中用Java获取时间实例
    获得当前时间的方法
    3d动画切换
    登录跳转效果
    activity 成popupwindow效果
    自定义preference的使用等等
    edittext输入框的背景效果
    自定义ListPreference
  • 原文地址:https://www.cnblogs.com/freeton/p/1631429.html
Copyright © 2020-2023  润新知