2010-11-10 205 views
4

我使用Razor视图引擎与MVC3 RC1和Razor,并通过它运行NerdDinner教程。“标签缺少名称”与剃刀

我有一个包含一些标记,然后这个片段的Javascript的局部视图:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#Address").blur(function (evt) { 
      $("#Latitude").val(""); 
      $("#Longitude").val(""); 

      var address = jQuery.trim($("#Address").val()); 
      if (address.length < 1) 
       return; 

      FindAddressOnMap(address); 
     }); 
    }); 
</script> 

我上“if (address.length < 1)”分析器错误:“标签缺少名称的所有标签必须包含“<”字符“”后的有效标签名称。

我试过围绕代码块使用<text></text>,但我仍然得到相同的错误。由于Razor的官方文档还不多,我希望有人能够告诉我我做错了什么,以及如何解决它。

+2

我不确定什么是正确的逃避它,但现在解决它:'if(!address.length)return;' – 2010-11-10 14:31:51

+0

是的,现在工作正常,但我更关心处理这是一个真正的产品,而不仅仅是一个教程nerddinner :) – 2010-11-10 14:47:46

回答

4

该问题看起来像是你可能在代码块@{}内有脚本标记。

检查解析器并尝试几种不同的解决方法,如果你只是删除空白,你会好起来的。 if (address.length<1)

奇怪的是,它在使用MVC之外的剃刀分析器的自定义应用程序中工作。这可能需要一些工作来找到真正的原因。实际上,一些更详细的测试表明它确实会在解析器中造成错误 - 我只是没有做任何我想说的特别感谢,因为我指出了这一点。这是我必须解决的问题。

解析器经历了2到3之间的一些更改,所以这可能是这些更改引入的错误。

+0

是的,它实际上是一个大的@using代码块 – 2010-11-10 16:05:06

+0

你会注意到,如果你移动它所分析的块的外部'script'标签就好 - 我已经通过解析器,看看我能否找到根本原因,它与块解析器本身有关,忽略某些类型的标签......可能必须通知微软的好人:) – Buildstarted 2010-11-10 16:06:37

+0

它不*需要*实际上是在@using块的内部,所以从中解决问题 – 2010-11-10 16:09:57