2012-06-25 97 views
6

我想使用自定義幫助器方法顯示部分視圖。唯一的問題是,我無法克服這個語法問題。爲這個cshtml文件設置的模型是我定義爲Operation的一個IEnumerable模型集合。我相信這是一個簡單的解決方法。下面是我所看到的例子:語法問題 - Razor 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

嘗試使用'Partial'而不是'RenderPartial' – lucask

+0

您的代碼看起來不錯。嘗試重新啓動Visual Studio。已經知道要解決這樣的一些異常現象。 –

+0

感謝您的建議。我嘗試了他們,但我仍然看到相同的錯誤。我認爲問題的核心在於第二個錯誤消息:無法將類型void無意中轉換爲對象 –

回答

1

問題已解決。我和同事一起工作過。事實證明,在我的部分視圖中,寫入方法指向了一個問題。我在裏面的一段代碼中使用@ {},這很可能也會引發其他語法錯誤。感謝您的迴應。

0

將您的渲染調用添加到{@ RenderPartial ...}

+0

感謝您的迴應,但是當我這樣做時,我仍然看到與以前相同的語法錯誤: 意外的「{ 「在」@「字符後面。一旦進入代碼塊的正文(@if {},@ {}等),您就不需要使用「@ {」切換到代碼。 –