星空网 > 软件开发 > ASP.net

ASP.NET MVC Razor视图

昨天介绍了一些Razor的基本语法,几天接着向下说:

补成一个,上次介绍了怎么输出原样的文本,用<text></text>标签,下面再介绍一种语法:

@{@:我爱北京}  这个@:我爱北京必须写在@{}C#代码段中,否则报错

 

1.输出@符号怎么做?

在Razor中,我们用@@输出”@”,类似于C#中”//”

2.我们可以在Razor使用Response.Write(),Server,Request,Session,这是为什么呢?

我们反编译.cshtml,生成一个前台类,这个类继承了WebViewPage<object>

ASP.NET MVC Razor视图

我们在前台类中没有看到Session、Server等等属性,那么去找它的父类WebViewPage<object>,父类也没找到,再找父类的父类,一次类推,终于在

ASP.NET MVC Razor视图

 

WebPageRenderingBase类中找到了,它在里面定义了我们想要的属性。

3.如何在Razor视图里定义方法?

我们在这里使用:

@helper Hello(string a){      <span>我爱北京天安门 @a</span>    }  @Hello("天安门上太阳升")

上文我介绍过,视图会编译成一个前台类,这个类有一个Execute()方法,会将视图上的静态内容和C#代码进行字符串拼接,如果我在视图上定义方法,岂不是在方法中定义方法吗?这是一个疑问,那么我们通过反编译来解决这些疑问。

ASP.NET MVC Razor视图

我们从上图上可以看到我们在视图中定义的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")

ASP.NET MVC Razor视图

 

与之对应的还有一个方法就是@{Html.RenderAction(“check“);}

ASP.NET MVC Razor视图

从上面两个图可以看出他们都能从一个视图上请求另一个视图,但是两个请求的方式并不一样,使用RenderPartial方法我在Index视图上直接请求check.cshtml,而RenderAction是去请求/home/check ,两个的方式不同。

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

ASP.NET MVC Razor视图

这样不是很友好。

下次我将介绍分布视图。

希望各位看官批评指正




原标题:ASP.NET MVC Razor视图

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

卷土重来!TikTok在印尼的新篇章开始了:https://www.goluckyvip.com/news/46115.html
亚马逊大幅下调销售佣金、配送费、仓储费!:https://www.goluckyvip.com/news/46116.html
TikTok美国小店门槛新规,女装品牌LovelyWholesale月销130万美金!:https://www.goluckyvip.com/news/46117.html
东南亚情报局|你真的了解马来西亚吗?五分钟速览:https://www.goluckyvip.com/news/46118.html
易仓科技获B轮4000万美元融资,TikTok计划在美推电商业务:https://www.goluckyvip.com/news/4612.html
DHL快递发布2021年春节假期服务安排调整通知:https://www.goluckyvip.com/news/4613.html
最新研究:亚马逊、沃尔玛、Temu和Shein卖家重合率不断攀升:https://www.kjdsnews.com/a/1836554.html
三清山好玩乜?:https://www.vstour.cn/a/365182.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流