ASP.NET MVC Razor视图(2)
昨天介绍了一些Razor的基本语法,几天接着向下说:
补成一个,上次介绍了怎么输出原样的文本,用<text></text>标签,下面再介绍一种语法:
@{@:我爱北京} 这个@:我爱北京必须写在@{}C#代码段中,否则报错
1.输出@符号怎么做?
在Razor中,我们用@@输出”@”,类似于C#中”//”
2.我们可以在Razor使用Response.Write(),Server,Request,Session,这是为什么呢?
我们反编译.cshtml,生成一个前台类,这个类继承了WebViewPage<object>
我们在前台类中没有看到Session、Server等等属性,那么去找它的父类WebViewPage<object>,父类也没找到,再找父类的父类,一次类推,终于在
WebPageRenderingBase类中找到了,它在里面定义了我们想要的属性。
3.如何在Razor视图里定义方法?
我们在这里使用:
@helper Hello(string a){
<span>我爱北京天安门 @a</span>
}
@Hello("天安门上太阳升")
上文我介绍过,视图会编译成一个前台类,这个类有一个Execute()方法,会将视图上的静态内容和C#代码进行字符串拼接,如果我在视图上定义方法,岂不是在方法中定义方法吗?这是一个疑问,那么我们通过反编译来解决这些疑问。
我们从上图上可以看到我们在视图中定义的Hello方法,返回值是HelperResult,这里我们可以知道只要你在视图上定义的方法返回值都是HelperResult类.所以这里就不存在在方法中定义方法了。
现在又有一个疑问了,我们采用Mvc模式的原因是为了让UI与业务分离开来,你又在UI中定义业务这不是多次一举吗?
解释:我们一般不在视图上定义方法,定义方法的目的是为了解决视图上要重复输出Html代码的情况,比如说我现在要在视图上不同位置多次输出<span>我爱北京天安门</span>,因为位置不同不能用for循环,多次写对程序员有负担,这里就用到了我们定义的方法了。
4.在一个视图上请求另一个视图
假设我们在Home控制器下的Index方法有一个Index.cshtml视图,现在我要在Index视图上请求Home控制器的一个Check.cshtml视图。
那么这就用到了
//在视图中调用 无返回值的方法必须使用代码段@{}
@{Html.RenderPartial("check");} //调用其他视图文件下的视图
@{Html.RenderPartial("~/Views/Dept/Index.cshtml");} //想将当前视图的数据传递到check视图上
可以使用ViewBag、ViewData、TempData等
@{
ViewBag.CName="你好啊";
Html.RenderPartial("check");
}
在视图中调用 有返回值 的方法不需要加@{},由此可以看出@后直接跟变量 或 带返回值的方法,会直接在此输出 变量内容 或方法返回值
@Html.TextBox("txtname")
与之对应的还有一个方法就是@{Html.RenderAction(“check“);}
从上面两个图可以看出他们都能从一个视图上请求另一个视图,但是两个请求的方式并不一样,使用RenderPartial方法我在Index视图上直接请求check.cshtml,而RenderAction是去请求/home/check ,两个的方式不同。
但是你查看网页源代码的时候会发现请求的视图中含有
这样不是很友好。
下次我将介绍分布视图。
希望各位看官批评指正
ASP.NET MVC Razor视图(2)的更多相关文章
- Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html
Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...
- ASP.NET MVC Razor视图引擎攻略
--引子 看下面一段MVC 2.0的代码. <%if (Model != null){%> <p><%=Model%></p><%}%>&l ...
- ASP.NET Mvc Razor视图语法
在ASP.NET MVC中有两套模版引擎,一套是ASPX,一套是Razor,从事过WebForms开发的朋友们,对于ASPX模版已经很熟悉了,下面我说一下我所熟悉的Razor模版引擎的一些语法,供大家 ...
- MvcMailer通过ASP.NET MVC Razor视图和基架发送邮件
MvcMailer是一个有趣的组件,您可以使用ASP.NET MVC框架在发送邮件.很重要的是,它使用Razor视图引擎的观点作为电子邮件模板和很容易安装和使用.在本文中你将看到如何安装,设置邮件模板 ...
- ASP.NET MVC——Razor视图引擎
Razor是MVC框架视图引擎,我们今天就来说一说Razor视图引擎. 首先还是来创建一个基础项目叫Razor来演示. 先来定义一个Model叫Product public class Product ...
- Asp.Net MVC Razor视图引擎与My97DatePicker插件的结合
using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using System. ...
- 体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图
这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配 ...
- ASP.NET MVC 5 - 视图
在本节中,你要去修改HelloWorldController类,使用视图模板文件,在干净利索地封装的过程中:客户端浏览器生成HTML. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所 ...
- ASP.NET MVC Razor语法
ASP.NET MVC Razor语法 (一) 关于_ViewStart.cshtml文件 使用Razor模板引擎的话,会自动生成一个_ViewStart.cshtml文件.事实上,_View ...
随机推荐
- 电商ERP常见功能模块
电商ERP是适用企业卖家的专业电子商务ERP,支持淘宝.天猫.京东.1688.当当.苏宁.拍拍.唯品会.亚马逊.独立B2C等多网络销售渠道:也包括 异地多仓..货位管理.智能配货等专业的WMS(仓 ...
- show status详解
Aborted_clients 某种原因客户程序不能正常关闭连接而导致失败的连接的数量.没有正常关闭 Aborted_connects 指出试图连接到MYSQL的失败的次数.这种情况在客户尝试用错误的 ...
- Chomp!游戏 (组合游戏Combinatorial Games)
http://blog.csdn.net/acdreamers/article/details/17021095 有一个n*m的棋盘,每次可以取走一个方格并拿掉它右边和上面的所有方格.拿到左下角的格子 ...
- C#根据WSDL文件生成WebService服务端代码
转自:http://www.cnblogs.com/liyi93/archive/2012/01/30/2332320.html 虽然现在已经进入了.NET FrameWork 4.0的时代,WebS ...
- asp.net服务器页面处理过程
一.静态页面.动态页面区别 静态页面是服务端直接从硬盘里面读取然后发回去,动态页面就要创建这个页面类的对象,调用对象的方法,方法里面什么就发回什么.浏览器请求asp.net页面实际是请求asp.net ...
- Eratosthenes筛选法
说到素数,最基本的算是一百以内的那些数了.这些数在数学竟赛中常常会被用到.比如说有这样一道题:“一百以内有多少在加2后仍然是素数的素数?”11和17就是这样的素数.如果对素数很熟悉的话,就能迅速得出答 ...
- C# is 强制转换
在平时开发中,经常遇上强制转换,在这过程中经常遇上null对象转换为值类型,如果不判断的情况下在编译的时候不会出错,但程序一运行就抛出错误.好在C#为我们提供了is ,它判断一个对象如果成立就转换,如 ...
- css 利用border属性制作箭头 Using Borders to Make Pure CSS Arrows
不再需要多余的图片 用border属性自然能创造箭头效果 学习地址:http://tech.patientslikeme.com/2010/11/09/using-borders-to-make-pu ...
- JavaScript基础-对象<1>
1.JavaScript内部对象属性和方法 (1)内置String对象 String 对象是JavaScript的核心对象之一. 创建一个sting对象: var a="this defin ...
- (int)、(int&)和(int*)的区别(转)
(1).首先通过一个例子看(int)和(int&)的区别: float a = 1.0f;cout << (int)a << endl;cout << (i ...