辅助器方法:
其作用就是对代码块和标记进行打包,以便能够在整个MVC框架应用程序中重用。

示类项目:
1.创建MVC项目:
添加Home控制器:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace MVC_ProjectDemo.Controllers
{public class HomeController : Controller{// GET: Homepublic ActionResult Index(){ViewBag.Fruits = new string[] {"Apple","Orange","Pear"};ViewBag.Cities = new string[] {"New York","London","Pairs"};string message = "This is an HTML element :<input>";return View((object)message);}}
}

Index动作方法对应的View视图 Index.cshtml:

@model string@{Layout = null;
}<!DOCTYPE html><html>
<head><meta name="viewport" content="width=device-width" /><title>Index</title>
</head>
<body><div> <div class="fruits">@foreach (string fruit in (string[])ViewBag.Fruits) {<b>@fruit</b>}</div><div class="cities">@foreach (string city in (string[])ViewBag.Cities) {<b>@city</b>}</div><div class="message"><p>@Model</p></div></div>
</body>
</html>

运行程序:
数据在前台正常显示

2.创建自定义辅助器方法:

2.1创建内联的辅助器方法:

内联辅助器是在视图中定义的,使用@helper标签创建一个内联辅助器。
改写 Index.cshtml:

@model string@{Layout = null;
}@*定义辅助器方法ListArrayItems参数:字符串数组
*@@helper ListArrayItems(string[] items)
{foreach (string item in items){<b>@item</b>}}<!DOCTYPE html><html>
<head><meta name="viewport" content="width=device-width" /><title>Index</title>
</head>
<body><div><div class="fruits">@ListArrayItems(ViewBag.Fruits)</div><div class="cities">@ListArrayItems(ViewBag.Cities)</div><div class="message"><p>@Model</p></div></div>
</body>
</html>

辅助器方法类似于C#中规则的方法,但是没有返回值,辅助器体的内容被处理,并被放到对客户端的响应之中。
好处就是如果后期有内容修改,只需修改一处即可。

2.2 创建外部辅助器方法
内联元素是方便的,但它们只能在当前视图中使用,而且,如果内联辅助器太复杂,可能会占据视图,而使视图难以阅读,
可以创建外部的HTML辅助器方法,它被表示成C#的扩展方法,
下面在当前的根目录下,添加HelperMethods文件夹,在该文件中,添加CustomerHelpers类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace MVC_ProjectDemo.HelperMethods
{public static  class CustomerHelpers{//扩展方法public static MvcHtmlString ListArrayItems(this HtmlHelper html,string[] list) {TagBuilder tag = new TagBuilder("ul");//创建ul父元素foreach (string s in list) {TagBuilder itemTag = new TagBuilder("li");//创建li子元素itemTag.SetInnerText(s);//设置元素内的文本值tag.InnerHtml += itemTag.ToString();//赋给父元素}return new MvcHtmlString(tag.ToString());//返回html字符串对象}}
}

这乍一看有没有感觉像JS或Jquery中创建父子元素,只是在MVC的web类中支持使用C#创建html元素,

TagBulider类

在View中使用外部辅助类方法:
1.使用@using引用命名空间
2.使用@Html.扩展方法名称 来引用辅助器,

@model string@{Layout = null;
}@*引用命名空间*@
@using MVC_ProjectDemo.HelperMethods<!DOCTYPE html>
<html>
<head><meta name="viewport" content="width=device-width" /><title>Index</title>
</head>
<body><div><div class="fruits"><div>Here are the fruits:@Html.ListArrayItems((string[])ViewBag.Fruits)</div><div>Here are the cities:@Html.ListArrayItems((string[])ViewBag.Cities)</div><div class="message"><p>@Model</p></div></div>
</body>
</html>

注意:
需要将ViewBag对象的动态属性转换为外部辅助器所定义的类型

应用场景:
我认为使用辅助器方法,主要是减少视图的重复量,并且只用于最简单的内容。

MVC辅助器方法之内联、外部辅助器方法相关推荐

  1. 辅助改方办理方法 计算机联锁,辅助所

    工业企业专用线在区间正线上接轨时,在接轨地点应设置辅助所.为贯彻责任制及保证机车车辆的运行安全,区间道岔须由辅助所管理. 中文名 辅助所 定    义 工业企业专用线在区间正线区    间 道岔须由辅 ...

  2. easy php moodle,Windows 环境下配置easyphp+moodle方法及设置外部IP访问方法

    安装有很多方法,最简单的方法就是easyphp+moodle,具体方法如下: 1.准备好安装必须的软件,包括easyphp和moodle.easyphp到http://easyphp.org/下载,m ...

  3. 分析方法升级三代测序辅助,优化无参转录组测序策略

    分析方法升级&三代测序辅助,优化无参转录组测序策略 无参转录组拼接升级 Corset 让"基因"概念更准确 在无参转录组项目中,利用主流软件 Trinity 进行 De n ...

  4. 解决TeXstudio外部查看器失败方法

      问题描述:在使用TeXstudio进行Latex操作时,代码输入完毕并构建查看后想要将所得文件保存为PDF版本,使用右侧左上栏"外部查看器"却报错:错误:无法执行命令,后面跟着 ...

  5. Python:闭包(简介、使用方法、nonlocal修改闭包内使用的外部变量)、装饰器(定义、作用、通用装饰器、多个装饰器、带参数的装饰器、类装饰器、装饰器方式添加WEB框架的路由)

    一.闭包的介绍 闭包可以保存函数内的变量 当闭包执行完毕,外部函数的变量才释放. # 闭包的作用:可以保存外部函数的变量 # 闭包的形成条件 # 1.函数嵌套 # 2.内部函数使用了外部函数的变量或者 ...

  6. 用于将带有查询字符串的复杂对象传递到Web API方法的自定义模型绑定器

    目录 介绍 查询复杂对象的字符串字段 使用和测试FieldValueModelBinder类 FieldValueModelBinder如何工作? 获取源字段和值 将字段部分与对象属性匹配 解析枚举类 ...

  7. c语言中控辅助DNF,DNF2019最新稳定代码辅助

    DNF CE修改器是一款针对<地下城与勇士>所推出的辅助软件.这款DNF2019最新稳定代码辅助功能强大,支持在游戏中修改搬砖.材料.技能.道具等,可以说你想要的都能修改,就是这么简单粗暴 ...

  8. 你真的会用移液器吗?送你移液器的正确使用方法及维护保养

    你真的会用移液器吗?送你移液器的正确使用方法及维护保养 在进行分析测试方面的研究时,一般采用移液枪(pipette)量取少量或微量的液体.对于移液枪的正确使用方法及其一些细节操作,是很多人都会忽略的. ...

  9. c语言中外部变量的使用方法,C语言外部变量的使用以及erxtern的用法

    网上有很多帖子问C语言中extern的用法,而且回答的详细程度各尽不同. 所以我就像写一篇博文来谈谈我对extern的看法,不一定十分恰当,只当大家共勉. 变量定义性声明和引用性声明 变量的声明有两种 ...

最新文章

  1. SQL语句的增删改查
  2. Linux扫盲篇:CentOS、Ubuntu、Gento
  3. 台风怎么看内存颗粒_生态板、密度板、颗粒板各有好处,看你怎么用了!
  4. python哨兵循环_Python:deadloop之非模态交互界面(模态循环)(哨兵循环)
  5. Linux内核 eBPF基础:perf(1):perf_event在内核中的初始化
  6. 程序为什么非得装入内存再执行?
  7. 神经网络训练输入数据并行化
  8. 1.2Android系统移植的主要工作
  9. java判断一个数是否为素数/质数
  10. java计算机毕业设计济南旅游网站源码+mysql数据库+系统+lw文档+部署
  11. Android之制作Nine-Patch图片
  12. 软件是如何驱动硬件的,代码是怎样对计算机实现控制的?
  13. 狗都能看懂的CenterNet讲解及代码复现
  14. 手机连无线显示服务器超时,手机登录melogin.cn连接超时解决步骤
  15. 【如何在寒武纪MLU上进行算法移植】-概述
  16. 版权问题某些资源无法下载
  17. JS 函数的递归算法
  18. Linux qt教程 qt入门(一)
  19. 计算机教师结构化方式面试,市计算机:17名学生通过全国教师资格证结构化面试...
  20. hibernate-transaction(提交事务)

热门文章

  1. 电脑屏幕录制怎么弄,简单好用的3种电脑录屏方法
  2. 国密算法SM4对本地文件加解密
  3. 【JZOJ A组】刺客信条
  4. 选择性粘贴更改html格式,选择性粘贴这二个逆天的技巧你肯定不知道!
  5. springboot+vue实现微信扫描支付
  6. Acrgis10.2以上版本导出属性表,用excel打开后乱码的解决办法
  7. 博客园电子期刊2012年1月刊发布啦
  8. 微信公众号运营怎么做:这些小技巧,新手也可操作
  9. NOIP 提高组 NO.1 生活大爆炸版 石头剪刀布 c++代码(只供参考)
  10. 程序员如何提高代码能力?