2013-11-10 67 views
5

我使用MVC 4,想整理一下我的看法了一點,所以決定創建多個局部視圖和渲染過程中把他們聚在一起。MVC4使用嵌套@ Html.RenderPartial()拋出編譯器錯誤信息:CS1502

這個工作原理當正在呈現的視圖有少數@Html.RenderPartial('path\to\my\partialView.cshtml')但如果這個partialView.cshtml反過來有其他@Html.RenderPartial('path\to\my\otherPartialView.cshtml')裏面定義的失敗。

我得到這樣的錯誤使用任何的RenderPartial或部分方法

error CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments 
error CS1503: Argument 1: cannot convert from 'void' to 'System.Web.WebPages.HelperResult' 

是否有MVC4的方式,我們可以將整理我的大視標記文件?即試圖用其他部分視圖漸進地組成部分視圖。

編輯

只是爲了讓更多的細節。

我的移動視圖看起來是這樣的:

文件:ManageLoads.Mobile.cshtml

位置:視圖 - > Shipper-> ManageLoads

這個觀點裏面我有這樣的代碼:

<div id="landingPage" ng-show="MenuSelection=='DefaultPage'"> 
      @Html.Partial("~/Views/Shipper/_DashboardPartial.cshtml") 
      <div class='message {{MessageClass}}'> 
     <i class='{{MessageIcon}}'></i> 
     <p>{{Message}}</p> 
      </div> 
     </div> 

這部分沒有問題,工作正常。現在在_DashboardPartial.cshtml裏面,如果我有另一個局部視圖的引用,它會失敗。

<div id="warehouseSelection" ng-show="getStep()==1"> 
    {@Html.RenderPartial("~/Views/Shipper/mobilePartials/_MyWarehouse.cshtml");} 
</div> 

此休息並引發錯誤,但如果我複製粘貼「_MyWarehouse.cshtml」裏面就有的內容,它開始重新工作。我已經驗證了_MyWarehouse.cshtml的路徑是正確的,所以我懷疑它與導致問題的RenderPartial方法的嵌套有關。

問候 基蘭

回答

16

的第一個問題,我看到的是,你的Html.RenderPartial語法不正確。該@應該是花括號像這樣的外:

@{Html.RenderPartial("~/Views/Shipper/mobilePartials/_MyWarehouse.cshtml");} 

其次,我不知道的Html.PartialHtml.RenderPartial組合在這裏造成了一些問題。嘗試使用Html.RenderPartial和上面的語法來查看是否修復了您的錯誤。

+1

你讓我的一天!在過去的幾天裏,我一直在努力解決這個問題,卻不知道發生了什麼。問題出在@置於{}內的錯誤位置。謝謝 – Kiran

2

您有幾種選擇,如:

  • 使用custom html helpers(簡稱普通HTML代碼);

  • 使用的RenderPartial或作爲的RenderAction它說here

(你也應該考慮使用紮根pathes像 '〜/查看/ someController的/ etc /到/我/ partialView.cshtml',甚至移動你的代碼到一些共享視圖「〜/查看/共享/ ......'但這一切都在你身上)。

編輯:

請看看this article。它解釋了你應該如何使用提到的方法。它必須是寧可在這樣的方式:

@{ Html.RenderPartial("ViewName"); } 

@Html.Partial("ViewName") 
+0

我不認爲我完全按照你的評論。當我在部分視圖上調用這些函數時,這些視圖又是由其他部分視圖構建的,我得到這些錯誤。我工作,如果我將第二級局部視圖複製到第一局部視圖。 – Kiran

+0

我用'@ Html.Partial(...)'沒有任何問題。你使用RenderPartial的確切原因是什麼? – Siim

+0

@Kiran剛剛在答案中增加了更多信息。 – Agat