我开始使用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
这种“技术”叫什么?
答案 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参数的动态输出'之外,该技术还没有真正的名称。