MVC辅助器方法之内联、外部辅助器方法
辅助器方法:
其作用就是对代码块和标记进行打包,以便能够在整个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辅助器方法之内联、外部辅助器方法相关推荐
- 辅助改方办理方法 计算机联锁,辅助所
工业企业专用线在区间正线上接轨时,在接轨地点应设置辅助所.为贯彻责任制及保证机车车辆的运行安全,区间道岔须由辅助所管理. 中文名 辅助所 定 义 工业企业专用线在区间正线区 间 道岔须由辅 ...
- easy php moodle,Windows 环境下配置easyphp+moodle方法及设置外部IP访问方法
安装有很多方法,最简单的方法就是easyphp+moodle,具体方法如下: 1.准备好安装必须的软件,包括easyphp和moodle.easyphp到http://easyphp.org/下载,m ...
- 分析方法升级三代测序辅助,优化无参转录组测序策略
分析方法升级&三代测序辅助,优化无参转录组测序策略 无参转录组拼接升级 Corset 让"基因"概念更准确 在无参转录组项目中,利用主流软件 Trinity 进行 De n ...
- 解决TeXstudio外部查看器失败方法
问题描述:在使用TeXstudio进行Latex操作时,代码输入完毕并构建查看后想要将所得文件保存为PDF版本,使用右侧左上栏"外部查看器"却报错:错误:无法执行命令,后面跟着 ...
- Python:闭包(简介、使用方法、nonlocal修改闭包内使用的外部变量)、装饰器(定义、作用、通用装饰器、多个装饰器、带参数的装饰器、类装饰器、装饰器方式添加WEB框架的路由)
一.闭包的介绍 闭包可以保存函数内的变量 当闭包执行完毕,外部函数的变量才释放. # 闭包的作用:可以保存外部函数的变量 # 闭包的形成条件 # 1.函数嵌套 # 2.内部函数使用了外部函数的变量或者 ...
- 用于将带有查询字符串的复杂对象传递到Web API方法的自定义模型绑定器
目录 介绍 查询复杂对象的字符串字段 使用和测试FieldValueModelBinder类 FieldValueModelBinder如何工作? 获取源字段和值 将字段部分与对象属性匹配 解析枚举类 ...
- c语言中控辅助DNF,DNF2019最新稳定代码辅助
DNF CE修改器是一款针对<地下城与勇士>所推出的辅助软件.这款DNF2019最新稳定代码辅助功能强大,支持在游戏中修改搬砖.材料.技能.道具等,可以说你想要的都能修改,就是这么简单粗暴 ...
- 你真的会用移液器吗?送你移液器的正确使用方法及维护保养
你真的会用移液器吗?送你移液器的正确使用方法及维护保养 在进行分析测试方面的研究时,一般采用移液枪(pipette)量取少量或微量的液体.对于移液枪的正确使用方法及其一些细节操作,是很多人都会忽略的. ...
- c语言中外部变量的使用方法,C语言外部变量的使用以及erxtern的用法
网上有很多帖子问C语言中extern的用法,而且回答的详细程度各尽不同. 所以我就像写一篇博文来谈谈我对extern的看法,不一定十分恰当,只当大家共勉. 变量定义性声明和引用性声明 变量的声明有两种 ...
最新文章
- SQL语句的增删改查
- Linux扫盲篇:CentOS、Ubuntu、Gento
- 台风怎么看内存颗粒_生态板、密度板、颗粒板各有好处,看你怎么用了!
- python哨兵循环_Python:deadloop之非模态交互界面(模态循环)(哨兵循环)
- Linux内核 eBPF基础:perf(1):perf_event在内核中的初始化
- 程序为什么非得装入内存再执行?
- 神经网络训练输入数据并行化
- 1.2Android系统移植的主要工作
- java判断一个数是否为素数/质数
- java计算机毕业设计济南旅游网站源码+mysql数据库+系统+lw文档+部署
- Android之制作Nine-Patch图片
- 软件是如何驱动硬件的,代码是怎样对计算机实现控制的?
- 狗都能看懂的CenterNet讲解及代码复现
- 手机连无线显示服务器超时,手机登录melogin.cn连接超时解决步骤
- 【如何在寒武纪MLU上进行算法移植】-概述
- 版权问题某些资源无法下载
- JS 函数的递归算法
- Linux qt教程 qt入门(一)
- 计算机教师结构化方式面试,市计算机:17名学生通过全国教师资格证结构化面试...
- hibernate-transaction(提交事务)