【ASP.NET基础--MVC】MVC视图基础语法学习
初步接触.net MVC的视图语法,很多东西都不太熟悉,感觉跟之前的aspx以及html都有一些区别,最近看别人的代码,一边看一边研究,现把学到的东西在这里记录一下,以便日后翻阅。
第一部分:基础知识
1.视图,英文叫做razor,在.net MVC项目中,它是以.cshtml后缀名来结束的。
2.一个很直观的发现,就是这种文件里面有很多用@开头或者以@{代码体},这种形式的代码是razor特有的一种策略,所有这类代码都会被asp.NET引擎进行处理。
3.在@{代码体}这种形式中的{}里面的各条语句之间需要用;进行分隔,而如果只是单单的一个@后接代码,则不需要用;分割。如
- <span style="font-size:14px;">@{
- ViewBag.Title = "用户注册";
- Layout = "~/Views/Shared/_Layout.cshtml";
- }</span>
和
- <span style="font-size:14px;"> @Html.EditorFor(model => model.UserName)
- @Html.ValidationMessageFor(model => model.UserName)
- @Html.DisplayDescriptionFor(model => model.UserName)</span>
4.定义变量,可采用如下的方法定义变量。
- <span style="font-size:14px;">@{
- var greeting = "Welcome to our site!"; </span>
- <span style="font-size:14px;"> var weekDay = DateTime.Now.DayOfWeek;
- var greetingMessage = greeting + " Today is: " + weekDay; }</span>
有点类似于javascript,当然也可以在页面中使用这个变量,但是必须要有@这个符号。
- <span style="font-size:14px;"><p>hello, @greeting</p></span>
需要注意的是,@前面需要有空格,asp.net才能够识别。
如@var i=10;
<p>text @i text</p>将输出text 10 text有空格,如果我们不想要这个空格怎么办呢,可以这样<p>text@{@i}text</p>,这样将输出text10text。此外
- <span style="font-size:14px;"><p>text@i text</p> 将输出 text@i text </span>
- <span style="font-size:14px;"><p>text@itext</p> 将输出 text@itext </span>
- <span style="font-size:14px;"><p>text @itext</p> 将报错 </span>
如果是输出的是变量的方法名则不需要用@{}括住也可生效,但注意在@字符前记得加空格。如: <p>text @i.ToString()text</p>
使用变量对象可直接写: @var1 @var2 @myObject.xx
5.在@{}中还可以写逻辑代码如:
- <span style="font-size:14px;">@{
- if(){}
- <span style="white-space:pre"> </span>else{}
- }</span>
6.还可以在@{}中使用html的元素,如:
- <span style="font-size:14px;">@{</span>
- <span style="font-size:14px;"> <p>text</p> </span>
- <span style="font-size:14px;"> <div>div1</div>
- }</span>
7.可以再@{}使用@:或者<text></text>标签输出文本。如
- <span style="font-size:14px;">@
- {
- @:this is a text
- @:this is another text
- }</span>
注意,此处不需要用到;来结束一条语句,若加了分号,输出的结果为this is a text; this is another text。我们发现这两条语句是并排的,要换行的话只需要在第一条语句的末尾加上<br/>即可。
使用<text></text>在@{}内部输出文本与上面的类似
- <span style="font-size:14px;">@{
- <text>
- this is a text
- this is another text
- </text>
- }</span>
跟上面的结果是一样的,也是默认没有换行的。
8.使用注释
有下面几种方法可以再@{}中使用注释。
单行注释使用// 如:
- <span style="font-size:14px;"> @
- {
- //这是一条注释
- }</span>
多行注释使用@* *@或者/* */如:
- <span style="font-size:14px;">@{
- @*注释
- 注释
- 注释*@
- /*注释
- 注释
- 注释*/
- }</span>
若在@{ ... }内部使用<!-- -->注释,则会输出到页面之中,如果在<!-- -->内部使用@变量,则会被处理
- <span style="font-size:14px;"> @{
- <!-- time now: @DateTime.Now.ToString() --> </span>
- <span style="font-size:14px;">} </span>
输出: <!-- time now: 4/9/2011 12:01 -->>
也就是说不能使用<!-->来注释。
9.类型转换:有以下几种类型转换方法
AsInt(), IsInt() AsBool(),IsBool() AsFloat(),IsFloat()
AsDecimal(),IsDecimal() AsDateTime(),IsDateTime() ToString()
例子如下:
@{
var i = “10”; }
<p> i = @i.AsInt() </p> <!-- 输出 i = 10 -->
}
10.还可以用循环,如下例子
- <span style="font-size:14px;">@for(int i=1;i<4;i++)
- {
- @:@i
- }</span>
当然这样也可以:
- <span style="font-size:14px;">@
- {
- for(int i=1;i<4;i++)
- {
- @:@i
- }
- }</span>
第二部分:htmlhelper
第二个从MVC视图代码中发现的是这类标记,以@html开头的,如
- @Html.TextBoxFor(model => model.VerificationCode)
- @Html.ValidationMessageFor(model => model.VerificationCode)</span>
这类代码。后面查了查,这类代码均叫做htmlhelper,是MVC中的视图中为了呈现HTML控件。以下介绍一些常用的htmlhelper。
ActionLink - 链接到操作方法。
BeginForm * - 标记窗体的开头并链接到呈现该窗体的操作方法。
CheckBox * - 呈现复选框。
DropDownList * - 呈现下拉列表。
Hidden - 在窗体中嵌入未呈现的信息以供用户查看。
ListBox * - 呈现列表框。
Password - 呈现用于输入密码的文本框。
RadioButton * - 呈现单选按钮。
TextArea - 呈现文本区域(多行文本框)。
TextBox * - 呈现文本框
此外,还有如@Html.LabelFor,@Html.ValidationMessageFor,@Html.EditorFor,@Html.PasswordFor,@Html.DisplayDescriptionFor等等,主要针对强类型的html控件来使用的。
1.ActionLink,介绍几种写法以及其所生成的源码。
一 Html.ActionLink("linkText","actionName")
该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法,
默认控制器为当前页面的控制器,如果当前页面的控制器为Products,则 Html.ActionLink("detail","Detail")
则会生成 <a href="/Products/Detail">detail</a>
二 Html.ActionLink("linkText","actionName","controlName")
该重载比第一个重载多了一个参数,他指定了控制器的名称,
如Html.ActionLink("detail","Detail","Products")则会生成
<a href="Products/Detail">detail</a>
三 Html.ActionLik("linkText","actionName",routeValues)
routeValue可以向action传递参数,如Html.ActionLink("detail","Detail",new { id=1})
会生成 <a href="Products/Detail/1">detail</a>,
此处假设当前的控制器是Products.
四 Html.ActionLink("linkText","actionName",routeValues,htmlAttributes)
htmlAttribute可以设置<a>标签的属性,
如 Html.ActionLink("detail","Detail",new{id=1},new{ target="_blank"})
会生成 <a href="Products/Detail/1" target="_blank">detail</a>,
需要注意的是如果写成 new{ target="_blank",class="className"}则会报错,
因为class是关键字,此处应该写成 @class="className"。
五 Html.ActionLink("linkText","actionName","controlName",routeValues,htmlAttributes)
该重载包含了上面提到的所有参数类型
RouteLink和ActionLink类似,此处稍作说明。
- <span style="font-size:14px;">@Html.RouteLink("关于","about")</span>
- <span style="font-size:14px;">@Html.RouteLink("关于","about",new{page=1})</span>
- <span style="font-size:14px;">@Html.RouteLink("关于","about",new{page=1},new{id=1})</span>
- <span style="font-size:14px;">分别生成的是</span>
- <span style="font-size:14px;"><a href="当前控制页/about">关于</a></span>
- <span style="font-size:14px;"><a href="当前控制页/about?page=1">关于</a></span>
- <span style="font-size:14px;"><a href="当前控制页/about?page=1" id="link1">关于</a></span><pre name="code" class="html">="当前控制页/about?page=1">关于</a>
- ="当前控制页/about?page=1">关于</a><pre name="code" class="html">="当前控制页/about?page=1">关于</a>
2.Form的2种用法
第一种:
- @using(Html.BeginForm("Actionname","Controlername",Formmethod)){}
比如
- @using(Html.BeingForm("Index","Home",FormMethod.Post)){
- }
第二种:
- @Html.BeginForm("Index","Home",FormMethod.Post)
- /*此处书写代码*/
- @Html.EndForm()
这两种方法生成的结果都是一样的,都是:
- </pre><pre name="code" class="html"><form action="/home/index" method="post"></form>
【ASP.NET基础--MVC】MVC视图基础语法学习的更多相关文章
- Razor视图引擎 语法学习(二)
下面就和大家分享下我在asp.net官网看到的资料,学习到的点语法.1.通过使用@符号,可以直接在html页面中写C#或者VB代码:运行后: 2.页面中的C#或者VB代码都放在大括号中.运行后: 3. ...
- Razor视图引擎 语法学习
下面就和大家分享下我在asp.net官网看到的资料,学习到的点语法.1.通过使用@符号,可以直接在html页面中写C#或者VB代码:运行后: 2.页面中的C#或者VB代码都放在大括号中.运行后: 3. ...
- Razor视图引擎 语法学习(一)
ASP.NET MVC是一种构建web应用程序的框架,它将一般的MVC(Model-View-Controller)模式应用于ASP.NET框架: ASP.NET约定优于配置:基本分为模型(对实体数据 ...
- MVC入门之.Net语法学习
本节中主要学习.Net框架性语法.开发者可以使用新语法提高编程的效率以及代码的运行效率:其本质都是“语法糖”,由编译器在编译时转成原始语法. u 自动属性 Auto-Implemented Prop ...
- ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 MVC 前面几章节中,我们都是基于 ASP.NET 空项目 ...
- [Asp.net MVC]Asp.net MVC5系列——布局视图
目录 系列文章 概述 布局视图 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net MVC5系列——添加视图 [Asp.net M ...
- ASP.NET MVC——Razor视图引擎
Razor是MVC框架视图引擎,我们今天就来说一说Razor视图引擎. 首先还是来创建一个基础项目叫Razor来演示. 先来定义一个Model叫Product public class Product ...
- ASP.NET Core 入门教程 7、ASP.NET Core MVC 分部视图入门
一.前言 1.本教程主要内容 ASP.NET Core MVC (Razor)分部视图简介 ASP.NET Core MVC (Razor)分部视图基础教程 ASP.NET Core MVC (Raz ...
- ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core Razor 布局视图 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Razor 布局视图 上一章节中我们学习了如何使用 EF ...
随机推荐
- 命令行通过入参调用jar包
命令行通过入参调用jar包 最近因为项目需要,需要实现一个功能,即定时执行服务器上的一个脚本去对数据库的数据进行业务处理,要操作的数据库有很多种,mysql.db2.oracle.sqlserver等 ...
- 初识云计算 -《AWS云端企业实战圣经》读书笔记
原书中涉及实操的地方,在本文中被省略.一是篇幅太长,放入文中太过累赘,二是原书成书过早,现在 AWS 的界面早已变化很大,不具备参考性. 第一章 谁在使用云计算 1.什么是云计算 云计算(cloud ...
- 【qt】【QString的诸多操作】
前言: qt的数据处理莫过于QString,QString对于字符串的操作多的数不胜数.下面博主就将常用的罗列出来,一起分享. 正文: 下面的操作具体为:追加,查找,删除,提取,分割,各种转换等等. ...
- python接口自动化测试之requests库详解
前言 说到python发送HTTP请求进行接口自动化测试,脑子里第一个闪过的可能就是requests库了,当然python有很多模块可以发送HTTP请求,包括原生的模块http.client,urll ...
- SDU暑期集训排位(4)
SDU暑期集训排位(4) C. Pick Your Team 题意 有 \(n\) 个人,每个人有能力值,A 和 B 轮流选人,A 先选,B 选人按照一种给出的优先级, A 可以随便选.A 想最大化己 ...
- CodeForces 103D Time to Raid Cowavans 询问分块
Time to Raid Cowavans 题意: 询问 下标满足 a + b * k 的和是多少. 题解: 将询问分块. 将b >= blo直接算出答案. 否则存下来. 存下来之后,对于每个b ...
- POJ1833 排列 调用全排列函数 用copy函数节省时间 即使用了ios同步代码scanf还是比较快
排列 Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 21268 Accepted: 8049 Description 题 ...
- webstorm 突然不能用了?解决办法~
首先 感谢http://idea.lanyus.com 提供的试用方法,就在刚刚,webstorm突然就不能使了,http://idea.lanyus.com立马给出了解决办法,就是在hosts文 ...
- ASP.NET MVC实现依赖注入
在java的spring中有自动注入功能,使得代码变得更加简洁灵活,所以想把这个功能移植到c#中,接下来逐步分析实现过程 1.使用自动注入场景分析 在asp.net mvc中,无论是什么代码逻辑分层, ...
- springmvc两种非注解的处理器映射器
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...