2012-06-25 20 views
6

私はカスタムヘルパーメソッドを使用して部分的なビューを表示しようとしています。唯一の問題は、私はこの構文の問題を乗り越えることができないということです。このcshtmlファイルのモデルセットは、Operationとして定義したモデルのIEnumerableコレクションです。私はこれが簡単な修正だと確信しています。ここで私が見ているものの例です:構文問題 - 面倒なMVC4

私はコードブロックを持っている:

@using(Html.BeginForm()) { 
     <div id="editor_rows"> 
      @foreach (var item in Model){ 
      Html.RenderPartial("OperationEditorRow", item); 
      } 
     </div> 
    } 

これは私に、実行時に次のエラー得られます

Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code. 

をしかし、私は削除する場合@ foreachステートメントの前に署名すると、すべてがプレーンテキストとして解釈されます。次のようにだから私は、HTMLの前に@を置くことを試みた:

@using(Html.BeginForm()) { 
     <div id="editor_rows"> 
      @foreach (var item in Model){ 
      @Html.RenderPartial("OperationEditorRow", item); 
      } 
     </div> 
    } 

これは言う、コンパイルエラーで戻ってくる:

Cannot implicitly convert type void to object 

私はここからプロジェクトを実行する場合、私はランタイムエラーを取得しますそれは言う:

The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments 

これは前のエラーと関連していると仮定しています。誰かが私のための提案をしているなら、助けてください。

+0

'RenderPartial'の代わりに' Partial'を使うようにしてください – lucask

+0

あなたのコードは正しく見えます。 Visual Studioを再起動してみてください。このような多くの異常を修正することが知られています。 –

+0

両方のご意見ありがとうございます。私はそれらを試しましたが、私はまだ同じエラーが表示されます。私は問題の心配が2番目のエラーメッセージにあると思います:オブジェクトにvoid型を暗黙的に変換できません –

答えて

1

問題を回避。私は同僚と仕事をしました。私の部分的なビューの中の問題を指し示しているwriteメソッドにエラーが出ていることが分かります。私は@ {}をそこのコードブロックの周りに使用していましたが、これは他の構文エラーも投げている可能性が最も高いです。回答ありがとう。

0

追加{}さん@ {れるrenderPartial ...}のようなあなたのレンダリングコール解決

+0

応答をありがとうが、私がこれを行うと、前と同じ構文エラーが表示されます: 予期しない "{ "@"文字の後に "コードブロック(@if {}、@ {}など)の本体の内部に入ると、コードに切り替えるために "@ {"を使う必要はありません。 –