第19章 辅助器方法

一、自定义辅助器方法

  1.内联辅助器方法

    使用@helper标签,具有名称、参数,无返回值,结果直接放到客户端的响应之中。在运行时评估类型

@helper ListArrayItems(string[] items)
{
    <ul>
    @foreach (string str in items)
    {

        <li>@str</li>
    }
   </ul>
}
<div>
    水果在这:@ListArrayItems(ViewBag.Fruits)
</div>

  2.外部辅助器方法(扩展方法)

 public static MvcHtmlString ListArrayItems(this HtmlHelper html , string[] lists)
        {
             TagBuilder tag= new TagBuilder("ul");
            foreach (string str in lists)
            {
                TagBuilder itemTag = new TagBuilder("li");
                itemTag.SetInnerText(str);
                tag.InnerHtml += itemTag.ToString();
            }

            return new MvcHtmlString(tag.ToString());
        }
@using HelperMethods.Infrastructure
.......
<div>
    城市在这:@Html.ListArrayItems((string[])ViewBag.Cities)
</div>

HtmlHelper类定义的有用的属性

属性 描述
RouteCollection 返回应用程序定义的路由集合
ViewBag 返回视图包数据,从动作方法传递给调用辅助器方法的视图
ViewContext 返回ViewContext对象,对请求的细节以及请求的处理方式进行访问

ViewContext类定义的有用属性

属性 描述
Controller 返回处理当前请求的控制器
HttpContext 返回描述当前请求的HttpContext对象
IsChildAction 当是子动作渲染的视图时为true
RouteData 返回请求路由数据
View 返回已调用辅助器方法的IView实现的实例

TagBuilder类的一些成员

成员 描述
InnerHtml 将元素内容设置成HTML字符串的一个属性,赋给这个属性的值将不进行编码,可以将它嵌入HTML元素
SetInnerText(string) 设置HTML元素的文本内容。string参数将被编码,以安全显示
AddCssClass(string) 对HTML元素添加一个CSS的class
MergeAttribute(string,string,bool) 对HTML元素添加一个标签属性。(参数是标签属性名称,值,是否替换已存在的同名标签属性)

    命名空间的引入可以放在/Views/web.config中。

    辅助器方法:为了减少视力中的重复量,只用于最简单的内容。

    分部视图:用于更复杂的标记和内容

    子动作:需要实现对模型数据的操作时使用。(辅助器不是只含有少量的C#语句或C#语句多于HTML元素时建议使用子动作)   

    对辅助器方法中的(危险)数据进行编码: 

            //有选择地对辅助器方法中的数据值进行编码
            string encodedMsg = html.Encode(msg);
            string result = string.Format("这里是信息内容:<p>{0}</p>", encodedMsg);
            return  new MvcHtmlString(result);

二、内建的Form辅助器方法

  1.创建表单元素

BeginForm辅助器方法的重载

重载 描述
BeginForm() 创建一个表单,回递给源动作方法(引发渲染该表单的动作依法)
BeginForm(action,controller) 创建一个表单,回递给以字符串形式指定的动作方法和控制器
BeginForm(action,controller,method) 创建一个表单,回递给以字符串形式指定的动作方法和控制器,并指定form元素中method标签属性的值
BeginForm(action,controller,method,attributes) 创建一个表单,回递给以字符串形式指定的动作方法和控制器,并指定form元素中method标签属性的值,指定form元素的标签属性(对象的属性)
BeginForm(action,controller,routeValues,method,attributes) 创建一个表单,回递给以字符串形式指定的动作方法和控制器,并指定form元素中method标签属性的值,指定form元素的标签属性(对象的属性),为路由配置中的路由片段变量指定一个值(对象的属性对应路由变量)
@using (Html.BeginForm(
    "CreatePerson", "Home", //动作方法名称,控制器名
    new { id = "MyIdValue" },//路由配置中id片段变量的值
    FormMethod.Post,//method标签属性的值
    new { @class="personClass",data_formType="person"}//form元素其他标签属性
    )){
    ............
    <input type="submit" value="提交"/>
    }  // <form action="/Home/CreatePerson/MyIdValue" class="personClass" data-formType="person" method="post"> 

  data_formType="person" 会被自动的映射成  data-formType="person"

   指定表单使用路由:

@using (Html.BeginRouteForm(
    "Default",//路由名称
    new { id = "MyIdValue" },//路由配置中id片段变量的值
    FormMethod.Post,//method标签属性的值
    new { @class="personClass",data_formType="person"}//form元素其他标签属性
 )){

  2.Input辅助器

基本Input HTML辅助器(强类型结果未输出,相似)

HTML元素 示例 输出
Checkbox(复选框)
@Html.CheckBox("myCheckbox", false)@Html.CheckBorFor(x=>x.myCheckbox)

<input id="myCheckbox" name="myCheckbox" type="checkbox" value="true" />

<input name="myCheckbox" type="hidden" value="false" />

Hidden field(隐藏字段)
@Html.Hidden("myHidden", "val")@Html.HiddenFor(x=>x.myCheckbox)
<input id="myHidden" name="myHidden" type="hidden" value="val" />
Radio button(单选按钮)
@Html.RadioButton("myRadioButton", "val", true)@Html.RadioButtonFor(x=>x.myRadioButton, "val")
<input checked="checked" id="myRadioButton" name="myRadioButton" type="radio" value="val" />
Password(密码框)
@Html.Password("myPassword", "val")@Html.PasswordFor(x=>x.myPassword)
<input id="myPassword" name="myPassword" type="password" value="val" />
Text area(文本域)
@Html.TextArea("myTextArea", "val", 5, 20, null)@Html.TextAreaFor(x=>x.myTextArea, 5,20,new{})
<textarea cols="20" id="myTextArea" name="myTextArea" rows="5">
Text box(文本框)
@Html.TextBox("myTextBox", "val")@Html.TextBoxFor(x=>x.myTextBox)
<input id="myTextBox" name="myTextBox" type="text" value="val" />
Select元素
Drop-down list(下拉列表)
 @Html.DropDownList("myList",new SelectList(new[]{"A","B"}),"请选择")

<select id="myList" name="myList">

<option value="">请选择</option>
<option>A</option>
<option>B</option>
</select>

Drop-down list(强类型下拉列表)
 @Html.DropDownListFor(m=>m.Gender,
  new SelectList(new[]{"M","F"}))
        

<select id="Gender" name="Gender">
<option>M</option>
<option>F</option>
</select>

时间: 2024-10-11 02:17:07

第19章 辅助器方法的相关文章

010_模板辅助器方法

相比辅助器方法,模板辅助器方法更智能一些,它们可以指定想要显示的属性,而让MVC框架去判断应该使用什么样的HTML元素.只是,需要一些初期关注才能建立起来,但毕竟是一种显示数据的更为灵活的方式. 这里打算继续使用介绍辅助器方法时使用的项目,但是,CreatePerson.cshtml视图在之前的辅助器方法会在生成的HTML元素上添加data属性,来支持表单验证,这一点在后面对模板辅助器方法的使用时打算禁用,但是,客户端验证特性对程序的其他部分仍然有效,调整后的代码如下(粗体部分为修改的内容):

Creating Custom Helper Methods 创建自定义辅助器方法----辅助器方法 ------ 精通ASP.NET MVC 5

创建内联的辅助器方法 和 拓展方法 好像类似的功能. 不过写在前台更直观

009_辅助器方法

辅助器方法 在开发ASP.NET MVC项目时,经常会用到辅助器方法,它能够提供很多遍历的工作,比如可以对代码块和标记进行打包等.下面通过新建一个示例项目来看看其在实际使用中的情况. 示例项目 项目名:HelperMethods 模板:Basic(基本) 首先要在项目中添加一个控制器--Home: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We

第21章 URL和Ajax辅助器方法

一.创建基本的链接和URL 视图最基本的任务之一是创建链接或URL,使用户能够随之进入应用程序的其他部分. 辅助器生成的链接或URL的好处是:输出来自路由配置,当路由发生改变全自动反映在链接和URL中. 渲染URL的HTML辅助器 描述 示例 输出 相对于应用程序的URL Url.Content("~/Content/Site.css") /Content/Site.css 链接到指定的动作控制器 Html.ActionLink("My Link", "I

使用整体模型模板辅助器 Using Whole-Model Templated Helpers 模板辅助器方法 精通ASP.NET MVC 5

怎么会

Creating Form Elements --Using BeginForm and EndForm 使用内建的Form辅助器方法 精通ASP.NET MVC 5

Using the BeginForm and EndForm Helper Methods in the CreatePerson.cshtml File

ASP.NET MVC使用HTML辅助器实现分页

在mvc中可以利用扩展方法添加HTML辅助器方法实现分页,这样就可以方便的实现分页代码的复用,代码如下 1 public static MvcHtmlString PageLinks(this HtmlHelper html, int curPage, int totalPage, Func<int, string> pageUrl) 2 { 3 StringBuilder result = new StringBuilder(); 4 int start = 1, end = totalPa

关于微信玩十人拼三张游戏作弊器透视辅助外挂,辅助器使用方法

关于微信玩十人拼三张游戏作弊器透视辅助外挂,辅助器使用方法[微信号:qqgkj0130 无丨法乄丨打丨开 打不开请添加微信][此乄乄信乄息乄永久乄有乄乄效][薇.信已开通]以实力求生存,以信誉求发展]"台美"日趋频繁热络联系 国台办:会自食其果联最新汽车遥控拦截 器怎么购买文基.金"的招募材料称,其所募资金主要用于获取南开国有资产经营有限(下称"南开国资")的80%股权,进行天津南开光电子城项目的一级土地整理,并以土地出让收入作为还款来源.2014年9月以

《深入Java虚拟机学习笔记》- 第19章 方法的调用与返回

<深入Java虚拟机学习笔记>- 第19章 方法的调用与返回