我无法理解Razor语法的工作原理。
据我了解,它允许您将服务器端代码直接嵌入到页面中,但即使客户端可以与客户端进行交互,它也会保留所有这些代码。
我已经习惯了ASP.net的Web视图和那种性质的东西 - Razor语法本质上是回发并且所有代码都包含在页面中,或者是客户端与服务器交互的方式 - 代码根本不同?
如果这太开放,请留下关于如何更多地关注问题的评论。我担心自己还没有足够的理解去做出精确集中的问题。
谢谢!
答案 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相同的代码并进行部署。