RenderPartial: No overload for method 'Write' takes 0 arguments

 

以下方法調用RenderPartial:html

報「No overload for method 'Write' takes 0 arguments」的錯誤;spa

 

@if (@Model != null && @Model.ProductBaseInfo != null)code

}
else
{
@Html.Partial("PartialView/_ProductNotFound")
}htm

@if (@Model != null && @Model.ProductBaseInfo != null)
{

} 
else
{
       
    @{Html.RenderPartial("PartialView/_ProductNotFound");}
}

改成下面代碼後錯誤消失:blog

@if (@Model != null && @Model.ProductBaseInfo != null)
{

} 
else
{
       
   @Html.Partial("PartialView/_ProductNotFound")
}

 

 

網上找了一下資料:http://www.cnblogs.com/meen/p/3145696.htmlget

下面的第一條應該解釋了緣由:RenderPartial和@Html.Partial一種是直接輸出Html,一種是在內部輸出(RenderPartial),因此RenderPartial沒法直接生成Html。it

一、帶有Render的方法返回值是void,在方法內部進行輸出;不帶的返回值類型爲MvcHtmlString,因此只能這樣使用:
    @Html.Partial 對應 @{Html.RenderPartial(....);}
    @Html.Action 對應 @{Html.RenderAction(....);}io

二、Action、RenderAction加載方法的視圖,執行Controller → Model → View的順序,而後把產生的頁面帶回到原來的View中再回傳。而Partial、RenderPartial直接加載視圖文件內容class

3.  Html.Partial能夠直接提供用戶控件名做爲參數,而Html.Action須要有對應的Action,在Action內部返回PartailResult(即retun PartialView())。登錄

四、對於簡單的沒有任何邏輯的用戶控件,推薦使用Html.Partial;對於須要設置一些Model的用戶控件,推薦使用Html.Action。固然,有Model數據也是可使用Html.Partial方法的,能夠看方法的重載。

五、使用Html.Action有個好處,就是能夠根據不一樣的場景選擇不一樣的用戶控件。好比:
@Html.Action("UserInfoControl")
在對應的UserInfoControl這個Action中,在用戶未登陸的時候,能夠retun PartialView("LogOnUserControl");登陸後,能夠retun PartialView("UserInfoControl");

相關文章
相關標籤/搜索