2010-11-10 113 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