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 ,两个的方式不同。

但是你查看网页源代码的时候会发现请求的视图中含有

这样不是很友好。

下次我将介绍分布视图。

希望各位看官批评指正

时间: 2024-07-30 20:30:19

ASP.NET MVC Razor视图(2)的相关文章

Asp.Net Mvc Razor视图语法

    Asp.Net Mvc Razor视图语法 [email protected]符号输出变量值 2.使用C#语法嵌套Html标签循环输出NameList的值:使用@{C#语法代码}: 3.输出@符号使用两个@@ 4.服务器注释使用@*注释内容*@ [email protected]:输出文本,或者使用<text></text> 6.在@()括号进行简单的操作或运算 [email protected]()或@{}可以输出带有html标签的字符串 8.Razor可以智能识别邮箱写

ASP.NET MVC Razor视图引擎攻略

--引子 看下面一段MVC 2.0的代码. <%if (Model != null){%> <p><%=Model%></p><%}%><%else{%> //Do something<%}%> 我们站在一个读者的立场上来看,”<% %>“这种标记C#代码的方法是十分蛋疼的. 如果写这段代码的人没有良好的缩进和对齐习惯的话,一段逻辑较为复杂的代码就会堆砌着杂乱无章的"<%“和"%>

ASP.NET MVC Razor 视图引擎

. 使用 @ 字符将代码添加到页面中.正如传统的aspx视图的<% %>相同.    下面代码是介绍单语句块.内嵌代码块.多行语句块 1 <!-- 简单块 声明两个变量--> 2 @{int num = 10;} 3 @{string str = "hello cnblogs";} 4 <!-- 内联表达式 输入刚才声明的两个变量--> 5 <p>刚才声明的整形的值为: @num</p> 6 <p>刚才声明的字符型

Asp.Net MVC Razor视图引擎与My97DatePicker插件的结合

1 using System; 2 using System.Collections.Generic; 3 using System.Runtime.CompilerServices; 4 using System.Linq.Expressions; 5 6 namespace System.Web.Mvc 7 { 8 /// <summary> 9 /// Extended the HtmlHelper for Calendar 10 /// </summary> 11 publ

体验 ASP.NET Core 1.1 中预编译 MVC Razor 视图

这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件. 需要在 project.json 中添加如下配置: 1)在 "dependencies" 中添加: "Microsoft.AspNetCore.Mvc.Razor.ViewCompilation.Design": "1.1.0-preview4-final" 2)在"tools&quo

ASP.NET MVC 5 - 视图

原文:ASP.NET MVC 5 - 视图 在本节中,你要去修改HelloWorldController类,使用视图模板文件,在干净利索地封装的过程中:客户端浏览器生成HTML. 您将创建一个视图模板文件,其中使用了ASP.NET MVC 3所引入的Razor视图引擎(Razor view engine).Razor视图模板文件使用.cshtml文件扩展名,并提供了一个优雅的方式来使用C#语言创建所要输出的HTML.用Razor编写一个视图模板文件时,将所需的字符和键盘敲击数量降到了最低,并实现

asp.net mvc4 razor视图 (之) 数据读取

@Html.Raw 或者直接访问,使用 Model属性. 参考这里:http://techo.luefher.com/coding/dot-net/mvc/how-to-access-your-model-data-in-net-mvc-with-razor-engine-for-beginners/ lambda表达式,类似这样: 数据从controller到view,因此如果要初始化,也是在controller里面进行,如下: asp.net mvc4 razor视图 (之) 数据读取

ASP.NET MVC 部分视图

转自http://blog.csdn.net/skyandcode/article/details/22594355 [部分视图] ASP.NET MVC 里的部分视图,相当于 Web Form 里的 User Control.我们的页面往往会有许多重用的地方,可以进行封装重用.使用 部分视图 :  1. 可以简写代码.2. 页面代码更加清晰.更好维护. [如何使用] 在视图里有多种方法可以 加载部分视图,包括: Partial()  Action()  RenderPartial()  Ren

asp.net mvc4 razor视图 (之) 继承,集成

隐藏了具体实现. 放在views/shared/_layout.cshtm 即为所有其他页面的父模板(template / masterpage) 页面继承(inherit/extend):页面继承通过@Html.RenderBody()/@Html.RenderSection('your_sec').继承方法如下: 页面集成(include):页面要加载其他控件(usercontrol/part),可调用 @Html.RenderPatial("your_partial_tempalte.cs