Moo*_*Cow 9 c# razor asp.net-mvc-3
我有一个部分视图,在我提交Ajax表单后返回一个Javascript函数调用.它需要一个地址列表并调用Javascript函数来对Google地图进行地理编码和放置标记.当我编译以下代码时,我在ForEach行的var周围出现"条件编译已关闭"错误.
@model IEnumerable<TestStore.Models.Address>
@if (Model.Count() > 0)
{
<script type="text/javascript">
deleteMarkers();
@foreach(var item in Model)
{
codeAddress('@item.GetAddress');
}
</script>
}
Run Code Online (Sandbox Code Playgroud)
我乱用代码,以下工作没有编译错误:
@if (Model.Count() > 0)
{
<script type="text/javascript">
deleteMarkers();
</script>
foreach (var item in Model)
{
<script type="text/javascript">
codeAddress('@item.GetAddress');
</script>
}
}
Run Code Online (Sandbox Code Playgroud)
为了便于讨论,如果我有更长的逻辑在循环内部进行大量的Javascript函数调用,我宁愿将1个脚本块中的所有内容包围起来.我在Stack Overflow周围搜索,看起来Razor语法可能会进入一个脚本块,但我不知道在我的例子中它是怎么样的.
las*_*s88 30
或者您可以使用@:语法而不是<text>循环中的元素.这是一个教程.
@:codeAddress(@item.GetAddress);
Run Code Online (Sandbox Code Playgroud)
Dar*_*o Z 17
因为你的for循环中的javascript看起来像是Razor的C#代码.包裹它<text>.一般来说,任何块内容{ /* this is block content */ }都应该总是有一个html节点 - 或者如果你不需要一个html节点(就像你的情况一样)你可以使用<text>
@foreach(var item in Model)
{
<text>codeAddress('@item.GetAddress');</text>
}
Run Code Online (Sandbox Code Playgroud)