2011-03-17 43 views
2

我試圖將一些數據發送到母版頁。我使用Razor作爲View Engine和AutoMapper來映射域和視圖模型。下面是我的代碼:RenderPartial問題(將數據發送到母版頁時)

//the partial view action method: 
public ActionResult RenderCategories() 
{ 
    IEnumerable<TopLevelCategory> categories = _categoryService.GetTopLevelCategories(); 
    var viewModel = new MasterPageViewModel 
        { 
         Categories = 
          Mapper.Map 
          <IEnumerable<TopLevelCategory>, IEnumerable<ParentCategory>>(categories) 
        }; 

    return View(viewModel); 
} 

//the partial view file: (this is just a test for now) 
@model Sharwe.MVC.ViewModels.MasterPageViewModel 

@foreach (var item in Model.Categories) { 
     @item.Name 
} 

public class MasterPageViewModel 
{ 
    public IEnumerable<ParentCategory> Categories { get; set; } 
} 

我打電話使用@ Html.RenderPartial從裏面我_Layout.cshtml文件中的局部視圖(「RenderCategories」)。但我不斷收到以下錯誤:

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

發生了什麼事?

回答

6

RenderPartial擴展方法直接寫入輸出流並且沒有返回類型(void)。因此,這裏的正確的語法來調用它:

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

,或者如果你願意,你可以使用Partial擴展方法:

@Html.Partial("RenderCategories") 

對比那些與他們在WebForms的等效視圖引擎:

<% Html.RenderPartial("RenderCategories"); %> 
<%= Html.Partial("RenderCategories") %> 
+0

啊我明白了。這實際上工作,但現在部分視圖的模型類型與@RenderBody區域的模型類型衝突。無論如何解決這個問題? – Kassem 2011-03-17 20:18:26

+0

您可以將正確的模型作爲第二個參數傳遞給'RenderPartial'方法。 – 2011-03-17 20:21:24

+0

我試圖做到這一點,但我無法正確理解。我仍然得到同樣的錯誤。請介意給我一個例子嗎? – Kassem 2011-03-17 20:27:21