我在我的一個視圖中有一段Razor代碼,其行爲並不像我期望的那樣。有問題的代碼包含多個位置,我需要將模型中的變量值添加到html屬性中。下面的代碼是我的頁面上標記的略微簡化版本(我刪除了一些對此示例不重要的標記「噪聲」,並且使代碼更難閱讀)。爲什麼Razor在某些情況下不識別變量而沒有將其包含在括號中?
有三種情況我使用@topic.StandardTopicId
。第一個和第二個實例被替換爲我所期望的,但第三個實例name="[email protected]"
呈現而不替換該變量。
代碼的問題:
@foreach(var topic in Model.Group) {
<div id="[email protected]" class="topic-frame">
<label>
<input type="radio" name="[email protected](topic.StandardTopicId)" />
No
</label>
<label>
<input type="radio" name="[email protected]" />
Yes
</label>
</div>
}
樣品從上面的代碼塊的輸出:
...
<div id="frame-42" class="topic-frame">
<label>
<input type="radio" name="IsCovered_42" />
No
</label>
<label>
<input type="radio" name="[email protected]" value="No" />
Yes
</label>
</div>
...
任何人都可以解釋爲什麼變量的最後一個實例沒有被替換,取而代之是按原樣呈現?
啊,打我吧,我知道這是類似的東西,但無法找到參考! – Davy8 2011-06-02 19:26:18
謝謝,就是這樣。我忘記了電子郵件的事情。如果我將下劃線更改爲短劃線以使其成爲'IsCovered- @ topic.StandardTopicId',則剃刀會很好地拾取它,因爲它無法將文本用破折號識別爲電子郵件。 – Hamman359 2011-06-02 21:21:46