.cshtml包含带有大括号的'at'符号的文件;这是什么?

时间:2017-10-18 19:55:05

标签: c# asp.net razor

我开始使用asp.net Web框架。我有一个以前写过的.cshtml文件,它包含一些我找不到任何信息的代码:

<script type="text/javascript>
    someJavaScriptFunction(@eventId);
</script>

据我所知,上面的代码创建了可以被内部javascript引用的c#变量,例如。

export LC_ALL=en_US.utf8 # to handle unicode characters in file
nl -n rz -ba file | sort -k2,2 -t$'\t' | uniq -f1 | sort -k1,1 | cut -f2

这种“技术”叫什么?

4 个答案:

答案 0 :(得分:2)

  

@{ }之间的代码是什么?

@{ }描述了可以放在.cshtml文件中的一段C#代码,该文件将在呈现页面时执行。在这种情况下,它会在ViewData集合中放置一个条目,并为eventId变量分配值。

  

如何在JavaScript代码中使用C#变量?

此处@再次表示Razor代码。 @variable会将variable的值输出到页面,因此假设eventId的值为12,页面实际上会显示为:

<script type="text/javascript>
    someJavaScriptFunction(12);
</script>

答案 1 :(得分:2)

如果您查看Razor syntax reference,则会发现

  

Razor支持C#并使用@符号从HTML转换为C#。

所以当你看到

@{ }

它是一个C#(仅限服务器端)代码块。了解所有cshtml(c#)首先运行并且只有纯html / css / javascript命中客户端是很重要的。所以像下面的代码没有意义:

@{
  var a = 1;
}

function blah(){
  var b = @a;
  b++;
  @a = b;
}

因为它会逐字编译成:

function blah(){
  var b = 1;
  b++;
  1 = b;
}

答案 2 :(得分:1)

从您的描述中我假设@ {}实际上不是您的主要问题,因此我决定解释

中的内容

viewdata和/或viewbag是动态对象,这意味着您可以在视图或控制器中设置对象属性,...模型对象是您决定传递给视图进行渲染的对象。

基本上viewdata和/或viewbag允许你在视图或控制器中为它们设置值,

这样:

 ViewData["Title"] = "Watching " + Model.EventName;

将title属性设置为相应的字符串值,Viewbag.title属性通常位于layout.cshtml中 - 因此,一旦从控制器传递此视图,标题值将设置为“Watching”+ Model。事件名称;

坦率地说,它很重要因为 - 您可以在调用其他视图后立即设置属性

model.ID - 是您传递给视图的对象的id - 因此,如果您传递影片对象进行查看,它将呈现该对象的存储属性

controller - &gt;

movie model = new movie() {title = 'Tommy boy'};
view(model) 

查看 - &gt;

<html><p>@Model.title <p> </html> is = <html><p>Tommy boy</p></html>

https://msdn.microsoft.com/en-us/library/system.web.mvc.controllerbase.viewbag(v=vs.118).aspx

答案 3 :(得分:0)

除了'使用Razor和C#的javascript参数的动态输出'之外,该技术还没有真正的名称。