2011-03-20 58 views
4

在我的代碼:剃刀的RenderPartial例外 - 預計「}」

@foreach (var post in Model.Posts) 
{ 
    Html.RenderPartial("ShowPostPartial", post); 
} 

我對的RenderPartial線的excepion

錯誤CS1513:}預期

我在做什麼錯?

+0

這段代碼是否在另一個'{...}'對中?那是我遇到這個問題的時候。我認爲在'foreach'之前不要使用@來修正它。 – CodesInChaos 2011-03-20 15:59:22

回答

0

我已經得到了Razor的這個問題,我不確定它是否是解析器中的錯誤或者是什麼,但我解決它的方式是分解:

@using(Html.BeginForm()) { 
<h1>Example</h1> 
@foreach (var post in Model.Posts) 
{ 
    Html.RenderPartial("ShowPostPartial", post); 
} 

} 

到:

@{ Html.BeginForm(); } 
<h1>Example</h1> 
@foreach (var post in Model.Posts) 
{ 
    Html.RenderPartial("ShowPostPartial", post); 
} 

@{ Html.EndForm(); } 
+0

是否有任何理由,你不使用使用? @using(Html.BeginForm()){// content //} ...這是你的問題,我相信 – Linkgoron 2011-03-20 17:12:08

+0

不,我只是忘了它。 :D編輯修復。 – 2011-03-20 18:03:13

+0

順便說一句你的問題是,你有一個@之前,你的foreach。另外,我更喜歡@ Html.Partial,而不是Html.RenderPartial ...但這只是我:P – Linkgoron 2011-03-20 18:30:28

0

我不好。 我在部分視圖中出現錯誤。 我在htmlAttributes中寫了'class'而不是'@class'。

2

爲了完整起見,這裏是導致此的另一種方式:

@if(condition) 
{ 
    <input type="hidden" value="@value"> 
} 

的問題是沒有結束的元素使得它沒有足夠的內容是一個html塊明顯的(但我們不是總是做xhtml,對吧?)。

在這種情況下,你可以使用:

@if(condition) 
{ 
    @:<input type="hidden" value="@value"> 
} 

@if(condition) 
{ 
    <text><input type="hidden" value="@value"></text> 
} 
+0

在這種情況下,我們使用''包裝。 – 2011-03-20 22:36:44

2

這是基本相同的答案,馬克Gravell了,但我覺得這個是一個容易犯的錯誤,如果你有一個更大的看法: 檢查html標籤,看看他們開始和結束,並注意到之間的剃刀語法,這是錯誤的:

@using (Html.BeginForm()) 
{ 
    <div class="divClass"> 
    @Html.DisplayFor(c => c.SomeProperty) 
} 
</div> 

這是正確的:

@using (Html.BeginForm()) 
{ 
    <div class="divClass"> 
    @Html.DisplayFor(c => c.SomeProperty) 
    </div> 
} 

同樣,幾乎相同的約未閉合輸入元素以前的職位,但只是要小心,我已經放在div的錯誤很多次更改視圖時。

+0

這解決了這個問題。 – SolidSnake4444 2014-01-21 17:47:41