当前位置: 首页 > 编程日记 > 正文

艾伟_转载:学习 ASP.NET MVC (第五回)理论篇

本系列文章导航

学习 ASP.NET MVC (第一回)理论篇

学习 ASP.NET MVC (第二回)实战篇

学习 ASP.NET MVC (第三回)实战篇

学习 ASP.NET MVC (第四回)实战篇

学习 ASP.NET MVC (第五回)理论篇

通过前几篇文章,我们通过ASP.NET MVC创建了一个简单的应用程序,学习了ASP.NET MVC的基本框架和工作流程。但是Demo中很多东西都是VS为我们自动生成的,比如View的html代码等。此文和大家一起学习一下ASP.NET MVC 中的Helper (辅助方法) --> HtmlHelperUrlHelper
何谓Helper,其实就是在View中为了实现一些灵活功能而写的方法组,主要的目的就是实现将界面与逻辑分离。

HtmlHelper

ASP.NET MVC提供了一个HtmlHelper用于生成Html标签和有数据绑定的Html标签。
1.ActionLink
其中最常用的就是Html.ActionLink。
ActionLink中的三个参数分别为:显示的文字,Action ,Controller 。其中Controller可以省略,省略时指向同一Controller下的Action。
---基本应用:

<%=Html.ActionLink("Hello""Index""Home")%>

 在UrlRouting规则为默认规则的情况下,它生成的HTML代码为:Hello
---带有QueryString的写法:

<%=Html.ActionLink("Hello""Index""Home"new { page=1 },null)%>

 -------Hello
如果连接中不涉及到action及controller就没有必要使用ActionLink,而是直接写HTML代码就可以了。Hello
2.Html表单元素
(1) Form:
我们当然可以使用纯的Html代码:
但是因为是在HTML的属性中,所以还是难以维护,ASP.NET MVC为我们提供了一个Helper,我们可以通过以下两种方式生成一个Form:

<%using(Html.BeginForm("index","home",FormMethod.Post)){%>表单内容  
<%%>

<%Html.BeginForm("index""home", FormMethod.Post);%>表单内容  
<%Html.EndForm(); %>

(2) 其他html标签:
ASP.NET MVC提供了多种表单元素的Helper。其中包括:TextBox(类似input type=text)、TextArea、DropDownList(select)、CheckBoxHidden、ListBox、Password、RadionButton。

如果我们想提供一个input type=text 它的name为t1则以下代码:

<%=Html.TextBox("t1"%>

(3) 表单元素绑定
如果我们想要让上文中的t1初始时就有一个值:

<%=Html.TextBox("t1","Hello"%>

 如果数据是从数据库中读取,即得到数据是从Action中获取的,那么我们可以在Action中使用ViewData传递。

Action:
ViewData["text"]="Hello";
View:
<%=Html.TextBox("t1",ViewData["text"]) %>


UrlHelper

1.UrlHelper.Action
UrlHelper的Action方法 用于生成一个URL地址:
Controller下Index:<%=Url.Action(“Index”)%> --------index
Controller下Index:<%=Url.Action(“Index”,new{id=1})%> --------index?id=1
UsersController下Index:<%=Url.Action(“Index”,"Users")%> --------/Users/index
UsersController下Index: <%=Url.Action(“Index”,"Users",new{id=1})%> /Users/index?id=1
在View中写Url.Action("Index","Home"),运行后则会生成/Home/Index这个地址。

2.UrlHelper.Encode
这也是UrlHelper的一个方法 使用方法 如<%=Url.Encode("中文")%>,功能与Server.UrlEncode相同。

3.UrlHelper.Content
用于服务器路径转换为绝对路径。如:
<%=Url.Content("~/content/site.css") %>最后的结果为:/content/site.css

转载于:https://www.cnblogs.com/waw/archive/2011/08/29/2156993.html

相关文章:

Jmeter(二十九)_dotnet搭建本地接口服务

这里使用的服务名为Bookshelf&#xff0c;在github上&#xff0c;自行下载。要运行此服务&#xff0c;需要.Net Core SDK 2.1或更高版本。如果尚未安装&#xff0c;从.Net Core官方网站下载并安装。 在本地克隆项目后&#xff0c;在命令行工具中打开项目文件夹并运行“dotnet r…

【eclipse】eclipse使用常见问题(持续更新)

创建maven工程中没有src/main/java及src/main/test文件夹 解决方法&#xff1a; 第一步 第二步 第三步 【eclipse】快速调整eclipse背景和格式的方法 第一步 第二步 第三步 &#xff1a;选择相应的格式 效果如图 eclipse 中使包名按层级显示的方法 使用eclipse在没网时编写配置…

Prometheus+Granfana

二、虚机&#xff08;服务器&#xff09;方式prometheus在虚机&#xff08;服务器&#xff09;中安装运行。 命令行启动在安装完成以后&#xff0c;可以直接在命令行启动。启动方式通常是&#xff1a; ./prometheus --config.fileprometheus.yml & 或者nohup /opt/promethe…

【原创】Cookie应用(二)

Cookie的作用很大&#xff0c;在很多技术方案中都有应用。它也是Forms身份认证模式所使用的一门技术点。 今天我就说一说它在Forms身份认证模式中都起到什么作用。 &#xff08;一&#xff09;理论知识 ASP.NET 使用身份验证提供程序实现附加的身份验证方案&#xff0c;这些身份…

艾伟_转载:探索.Net中的委托

废话 我本来以为委托很简单&#xff0c;本来只想简简单单的说说委托背后的东西&#xff0c;委托的使用方法。原本只想解释一下那句&#xff1a;委托是面向对象的、类型安全的函数指针。可没想到最后惹出一堆的事情来&#xff0c;越惹越多&#xff0c;罪过&#xff0c;罪过。本文…

OO第三阶段总结

1、 规格化设计的发展 我认为规格化设计的需求主要来源于在软件与互联网行业飞速发展下&#xff0c;工程随着代码量的增长&#xff0c;往往会显得异常的臃肿&#xff0c;难以阅读。这为多人合作的工程创造了巨大的不便。而在这样的背景下&#xff0c;大家都认为代码风格的统一和…

ubuntu18.04 -- 创建第一个Django项目

step1&#xff1a; 安装虚拟环境&#xff1a; sudo pip3 install virtualenv # 安装虚拟环境sudo pip3 install virtualenvwrapper # 安装虚拟环境扩展包# 编辑家目录下的 .bashrc 文件&#xff0c;在最下面添加下面三行代码 export WORKON_HOME$HOME/.virtualenvs #指定…

单链表逆序生成及逆置的完整实现

单链表逆序生成及逆置的完整实现 本例中单链表数据类型定义成int型&#xff0c;可更改 头文件1(1.h) 宏定义及Status类型定义 头文件2(2.h) 单链表基本操作函数与逆置函数 include"1.h" using namespace std;typedef int ElemType; typedef struct LNode{ElemTyp…

html frameset

两个frame <frameset cols"25%,75%"> <frame name "frame1" src"frame_a.php" /><frame name "frame2" /></frameset> 如果在PHP中要实现在frame刷新 frame echo "<meta http-equiv\"Refre…

黄聪:Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)...

去空格及特殊符号 s.strip().lstrip().rstrip(,) 复制字符串 #strcpy(sStr1,sStr2) sStr1 strcpy sStr2 sStr1 sStr1 strcpy2 print sStr2 连接字符串 #strcat(sStr1,sStr2) sStr1 strcat sStr2 append sStr1 sStr2 print sStr1 查找字符 #strchr(sStr1,sStr2) # < 0 …

Java图形化界面设计——容器(JFrame)

Java图形化界面设计——容器&#xff08;JFrame&#xff09; 程序是为了方便用户使用的&#xff0c;因此实现图形化界面的程序编写是所有编程语言发展的必然趋势&#xff0c;在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构&#xff0c;现在就进入java图形化…

分库分表之后,主键的处理方法

面试题 分库分表之后&#xff0c;id 主键如何处理&#xff1f; 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题&#xff0c;就是 id 咋生成&#xff1f;因为要是分成多个表之后&#xff0c;每个表都是从 1 开始累加&#xff0c;那肯定不对啊&#xff0c;需要一个全…

用队列实现形如a+b@b+a#的中心对称字符的检验

用队列实现形如abba#的中心对称字符的检验 我用网上提供的一种思想&#xff0c;用循环队列实现了这个操作&#xff0c;具体代码如下。 /*函数名match,严格来说它并不是Status型*/ Status match(char *a){SqQueue q; //定义循环队列q ch…

如何使用JPA注解标注多对多的关系

假设应用场景如下&#xff1a;Teacher与Student是多对多的关系&#xff0c;其中&#xff0c;Teacher类对应teacher表如下&#xff1a; CREATE TABLE teacher (id bigint(20) NOT NULL AUTO_INCREMENT,name varchar(50) DEFAULT NULL,PRIMARY KEY (id)) ENGINEInnoDB AUTO_INCRE…

艾伟也谈项目管理,敏捷教练的工具箱

学习并不是简简单单的阅读和浏览&#xff0c;而是一个积累的过程&#xff0c;一个通过持续的学习&#xff0c;对自己的知识体系不断丰富、索引的过程。接下来我会从四个方面入手分享我的经验。 高质量的信息源和高效的学习 Google是一个很好的工具&#xff0c;通过它&#xff…

7.Odoo产品分析 (二) – 商业板块(3) –CRM(1)

查看Odoo产品分析系列—-目录 CMR&#xff1a;Customer Relationship Management。企业为提高核心竞争力&#xff0c;利用相应的信息技术以及互联网技术协调企业与顾客间在销售、营销和服务上的交互&#xff0c;从而提升其管理方式&#xff0c;向客户提供创新式的个性化的客户交…

用栈实现形如a+bb+a@的中心对称字符的检验

用栈实现形如ab&ba的中心对称字符的检验 将&前字符依次入栈与前字符进行比较即可&#xff0c;下面是方法 Status match(char *a){ //match方法 SqStack s; char c; char *pa; InitStack(s); while(*p!&){ …

Typedef用法(转载)

在C的学习过程中&#xff0c;现在才发现&#xff0c;以前有那么多被忽略的重点&#xff1b;现在是慢慢拾起这些重点的时候&#xff0c;通过百度和博客&#xff0c;我感觉我学到了很多东西&#xff0c;自己只是在别人说的基础上&#xff0c;按照自己学习的过程在这里记录一下&am…

JavaScript基本知识

数组的排序 JavaScript可以实现多维数组,对象数组等排序,语法如下 arrayobj.sort(sortfunction) 参数 arrayObj 必选项。任意 Array 对象。 sortFunction 可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略&#xff0c;那么元素将按照 ASCII 字符顺序进行升序排列…

七基于Fourinone实现MQ demo

2019独角兽企业重金招聘Python工程师标准>>> FourInOne也可以当成简单的mq来使用&#xff0c;该demo演示了队列和主题订阅两种模式的实现 一、队列 将domain视为mq队列&#xff0c;每个node为一个队列消息&#xff0c;检查domain的变化来获取队列消息。 Sender&…

Windows下安装XAMPP,Wordpress

配置XAMPP&#xff1a; 1、下载&#xff1a;https://www.apachefriends.org/zh_cn/download.html&#xff08;下载速度日了狗&#xff01;&#xff09; 2、安装XAMPP; 3、启动apache&#xff0c;MySQL&#xff1a; Apache启动错误&#xff1a; …

原生js实现复制

最后我的解决方案是&#xff0c;在页面中添加一个 div&#xff0c;手动写入内容innerHTML&#xff0c;然后把它隐藏掉 function copy(targetDom) {let range document.createRange();range.selectNode(hiddenErrcode);window.getSelection().removeAllRanges();window.getSele…

C#条件判断-根据条件判断要走的路-if结构

什么时候要用到if结构语句呢?如果有一个班的学生期末成绩不是很理想&#xff0c;原因是考题太难&#xff0c;教师希望根据学生平时的表现给不同学生加平时成绩分&#xff0c;条件如下&#xff1a; 如果平时每次都交作业&#xff0c;加20分&#xff1b;如果平时交了超过所有作业…

既往出现中性粒细胞减少的患者可以重新应用依那西普

原文 译文 Clin Rheumatol. 2011 Aug 5. [Epub ahead of print] Re-challenge with Etanercept in patients with Etanercept-induced Neutropenia. Haroon M, Daly M, Harney S. Source Department of Rheumatology, Cork University Hospital, Cork, Irela…

RTTI(三)相关函数1【转自大富翁】

第三部分RTTI相关函数 GetTypeData 函数 GetPropInfo 函数 FindPropInfo 函数 GetPropInfos 函数 SortPropList 函数 GetPropList 函数 GetObjectPropClass 函数 PropType / PropIsType 函数 IsPublishedProp 函数 IsStoredProp 函数 FreeAndNilProperties 函数 SetToString /…

中序非递归遍历二叉树

二叉树的递归算法虽然简单&#xff0c;但是会导致时间复杂度比较高&#xff0c;下面给大家带来用栈实现的二叉树非递归算法 首先定义好二叉树&#xff0c;和元素类型为二叉树的栈 typedef struct BiTNode{TElemType data;struct BiTNode *lchild, *rchild; }BiTNode,*BiTr…

修改属性使按钮处于无验证状态

.net 页面中如果有验证不为空的控件&#xff0c;而且有重置按钮。此时需要将重置按钮的属性设置为无验证状态 如图将CausesValidation属性设置为false转载于:https://www.cnblogs.com/xiaopanlyu/archive/2012/06/28/2568823.html

poj3253

本文地址&#xff1a;https://www.cnblogs.com/maplefighting/p/9116850.html 题目名称&#xff1a;Fence Repair 链接&#xff1a;http://poj.org/problem?id3253 题意&#xff1a;农夫准备把木板切成n块&#xff0c;每块长度为Li&#xff0c;每次切木板时需要花费切时木板的…

一起谈.NET技术,C#中int和System.Int32理解总结

最近园里的TeamOne写了一篇《[C#] int与System.Int32有什么区别》&#xff0c;发现里面有不少精彩的评论&#xff0c;所以忍不住想这篇文章总结一下: 本文的主要参考资料&#xff1a; 1.《理解C#中的System.Int32和int&#xff1a;并非鸡和鸡蛋》Author:Dixin 2.《[C#] int与Sy…

java多线程编程01---------基本概念

一. java多线程编程基本概念--------基本概念 java多线程可以说是java基础中相对较难的部分&#xff0c;尤其是对于小白&#xff0c;次一系列文章的将会对多线程编程及其原理进行介绍&#xff0c;希望对正在多线程中碰壁的小伙伴有所帮助。 &#xff08;一&#xff09;进程、线…