Microsoft Razor语法如何运行服务器端代码而不将其暴露给客户端?

时间:2015-08-18 17:10:17

标签: c# asp.net .net razor

我无法理解Razor语法的工作原理。

据我了解,它允许您将服务器端代码直接嵌入到页面中,但即使客户端可以与客户端进行交互,它也会保留所有这些代码。

我已经习惯了ASP.net的Web视图和那种性质的东西 - Razor语法本质上是回发并且所有代码都包含在页面中,或者是客户端与服务器交互的方式 - 代码根本不同?

如果这太开放,请留下关于如何更多地关注问题的评论。我担心自己还没有足够的理解去做出精确集中的问题。

谢谢!

4 个答案:

答案 0 :(得分:3)

根据我的理解:

<强> 1。 Razor语法的工作原理:

你可以看到Razor类似于Web Form中的scriplet。例如,您想要在Name文件中获取Human类的.cshtml,您可以写:

<div>Name is @Model.Name</div>

aspx中,你写道:

<div>Name is <%= Human.Name %></div>

在将HTML文件返回给客户端之前,将处理Razor和scriplet。按照上面的例子,如果你查看HTML网页的来源,你会看到(Forte只是一个例子):

<div>Name is Forte</div>

因为代码已经过处理,所以客户端看到的只是HTML结果。

2.客户如何与服务器互动?

在Web窗体中,当您想要转到服务器(如句柄click按钮事件)时,您可以通过设置OnClickListener为按钮生成要调用的函数,并且所有内容都会自动完成你。

但是,在MVC.NET中,您必须通过Ajax调用来完成,或者将您的按钮放在<form>中。

如果您有任何疑问,请随时告诉我:)

答案 1 :(得分:2)

mvc运行服务器端的所有东西,并为客户端提供生成的html / javascript生成。

答案 2 :(得分:1)

让我们说你在视图中有这个

@{ var var1 =   "Hello World"; }
<p>The value of var1 is: @var1</p> 

一切都在服务器上发生

当用户请求此页面时,服务器获取上面的文本并将其发送到视图引擎。

然后服务器逐行运行文本,&#34;编译&#34;它

然后服务器将结果返回给用户:

The value of var1 is: Hello World

如果用户创建了一个视图源,他只会看到:

<p>The value of myMessage is: Hello World</p>

所以客户端上的用户写了一个简单的URL,他得到的结果只是上面的一行。

答案 3 :(得分:0)

基本上它像任何其他csharp / vb.net文件一样编译视图。但是,它会即时执行(第一次点击它,并且底层文件没有更改)。

如果您想查看生成的代码是什么样的,请查看https://github.com/RazorGenerator/RazorGenerator这样您就可以实际生成与MSbuild相同的代码并进行部署。